SQL技术需求:按ID分组,基于Group列去重后求和Value列
按ID分组并对唯一Group对应的Value求和
要实现同一ID下每个Group对应的Value仅计算一次的求和需求,可以通过先去重再聚合的方式实现:
解决方案SQL语句
SELECT ID, SUM(Value) AS SUM FROM ( -- 提取每个ID下唯一的Group和对应的Value组合 SELECT DISTINCT ID, `Group`, Value FROM your_table_name ) AS unique_group_values GROUP BY ID;
逻辑说明
- 子查询使用
DISTINCT关键字,筛选出所有ID、Group、Value的唯一组合,确保同一ID下同一个Group的同一份Value只出现一次; - 外层查询按
ID分组,对去重后的Value进行求和,得到每个ID对应的最终结果。
适配特殊场景
如果同一ID+Group下存在不同的Value值(比如某ID的同一个Group同时对应5和6两个Value),该方案会将这些不同的Value都纳入求和范围,完全适配你提到的“每个Group不一定对应唯一的Value值”的场景。
内容的提问来源于stack exchange,提问作者Harley Towler
相关产品推荐
相关产品推荐

