gpt4 book ai didi

MySQL 不带子查询的不同总和

转载 作者:行者123 更新时间:2023-11-29 13:19:01 25 4
gpt4 key购买 nike

我有两个主表 bills 和 billing_items:

bills
_______
id
..
amount
balance

billing_items
______________
id
...
bill_id

我需要根据 billing_items 表中的某些条件获取帐单金额和余额的总和(该表引用其他感兴趣的表)

当我使用以下查询时,我得到重复项:

select sum(b.amount), sum(b.balance) 
from bills b left join billing_items bi
on b.id=bi.bill_id;

由于我正在使用的 ORM,我无法使用如下子查询(不支持子查询):

select sum(a) from 
(select b.amount as a, b.balance
from bills b left join billing_items bi
on b.id=bi.bill_id group by b.id) t;

省略了 billing_items 及其引用表的条件,但我需要引用 billing_items

最佳答案

不确定你的ORM是否允许在你的SQL中使用用户变量,如果是的话你可以尝试这个,基本上是ORDER BY bi.bill_id并且仅当有新的 bill_id 时才计算总金额

select sum(IF (@prevBillId IS NULL OR @prevBillId != bi.bill_id,b.amount,0)) as sumAmount, 
sum(IF (@prevBillId IS NULL OR @prevBillId != bi.bill_id,b.balance,0)) as sumBalance,
@prevBillId:=bi.bill_id
from bills b left join billing_items bi
on b.id=bi.bill_id
ORDER BY bi.bill_id;

看到这个sqlFiddle

关于MySQL 不带子查询的不同总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21103402/

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