You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在重复编号场景下,不分组显示总金额求和结果?

问题描述

现有两张数据库表table_a和table_b,数据如下:

table_a                    table_b
                    
desc    amount  ID        vcref     ID
banana   2.00   101       VC10001   101
apple    3.00   101       VC10001   101
orange   5.00   101       VC10003   101

执行以下SQL语句:

select sum(a.amount),b.vcref from table_a a,table_b b where a.ID=b.ID group by b.vcref;

得到结果:

result 
   20.0     VC10001 
   10.0     VC10003

现在希望得到如下格式的结果:

result 
   10.0    VC10001
   10.0    VC10001
   10.0    VC10003

需求是:每个table_b的行都显示table_a中amount的总求和值,而非分组后的求和结果,请问是否可以实现该需求?

解决方案

当然可以实现。核心就是先算出table_a里amount的全局总和,再把这个总和和table_b做关联,不用按vcref分组,这样table_b的每一行都会显示这个总求和值。

给你两种常用的写法:

写法一:子查询计算对应ID的总和

select (select sum(amount) from table_a where ID = b.ID) as total_amount, b.vcref
from table_b b;

写法二:交叉连接关联总和结果

select total.total_amount, b.vcref
from table_b b
cross join (select sum(amount) as total_amount from table_a where ID = 101) as total
where b.ID = 101;

补充说明

这两种写法都会先计算table_a中ID为101的所有amount总和(2+3+5=10),然后把这个值对应到table_b的每一行上,正好得到你要的结果。如果你的数据里有多个不同的ID,写法一的适配性更强,子查询里的ID = b.ID会自动匹配table_b每行对应的ID,算出对应ID的总和。

内容的提问来源于stack exchange,提问作者Daniel Hoong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:01:15