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

如何计算表中指定group_id及其子组的金额总和?SQL语句求助

正确SQL实现方案

嘿,我来帮你搞定这个SQL问题!先说说你原来语句的问题:你写的CASE WHEN fee_groups.groups_id = fee_groups.parent_fee_groups_id THEN amount ELSE 0 END是在判断当前行的group_id和自身的parent_group_id是否相等,这一般是用来找顶级分组(如果数据里顶级组的parent_id等于自身的话),但这和你要的「group_id为69的行 + 所有parent_group_id为69的行」完全不匹配,所以自然得不到预期结果。

针对你的需求,有两种简单直接的实现方式:

方式一:直接筛选符合条件的行求和

这是最直观的写法,先把目标行筛选出来,再对amount求和:

SELECT SUM(amount) AS total
FROM fee_groups
WHERE group_id = 69 OR parent_group_id = 69;

用你提供的测试数据,这个语句会返回1700(1000+700),正好是你要的结果。

方式二:用CASE表达式在全局查询中计算

如果你的需求是在更复杂的查询(比如和其他统计字段一起输出)中计算这个总和,可以用CASE表达式来标记符合条件的行:

SELECT 
    SUM(CASE 
        WHEN group_id = 69 OR parent_group_id = 69 THEN amount 
        ELSE 0 
    END) AS total
FROM fee_groups;

这个写法会遍历所有行,只对符合条件的行的amount进行累加,最终结果和方式一一致。

内容的提问来源于stack exchange,提问作者Maniraj Murugan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:01:12