gpt4 book ai didi

sql - 汇总SQL查询以汇总组付款

转载 作者:行者123 更新时间:2023-12-03 18:16:02 24 4
gpt4 key购买 nike

因此,我有一个用于跟踪小组付款的简单应用。数据库结构如下:



本质上,当您添加付款时,会将其插入到payments表中,并且payers_payments联接表中包含有关每个payer已付款额以及是否应将其包括在付款中的枢轴数据。我的应用程序检索此数据并构建一个语句,显示每个付款人已支付的金额,其应得份额和所欠金额。通过付款和总和显示每个付款人的总和。

示例数据:

付款人付款



付款方式



这是带有2个付款的示例语句(数据与上面的示例数据不匹配)。在第二笔付款中,汤姆不包括在付款(pays = false)中,因此他的公平份额是0,而蒂姆的公平份额是这两次付款的总和除以该付款的pays=true数。



有没有一种方法可以查询每个付款人的总数,而无需单独获取每笔付款并循环遍历以获得总额?我可以轻松获得每个付款人的总付款额:

SELECT payers_payments.payer_id, 
Sum(payers_payments.amount) AS SumOfamount
FROM payers_payments
GROUP BY
payers_payments.payer_id;


但是如何获得公平份额?基本上,我需要将每次付款的金额相加,然后除以拥有 pays=true以获得付款公平份额的付款人数量,并将其添加到付款人具有 pay=true的付款人公平份额总额中。 1个查询可以吗?

最佳答案

SELECT payers_payments.payer_id, 
Sum(payers_payments.amount) AS SumOfamount,
Sum(if(payers_payments.pays=1,1,0)) AS countOfPays
FROM payers_payments
GROUP BY
payers_payments.payer_id;


那是MySQL版本。

sum(if())可以替换为

SUM(CASE(payers_payments.pays) WHEN 1 THEN 1 ELSE 0 END AS countOfPays

关于sql - 汇总SQL查询以汇总组付款,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22454101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com