如何在SQL查询中将重复值计为单个值进行求和
解决SQL中重复值仅计一次的求和问题
要实现对value1列求和时,同一Items对应的重复值只计算一次,核心思路是先提取每个Items对应的唯一value1,再对这些唯一值求和。以下是两种常用的实现方式:
方法一:先去重再求和(推荐,适配多场景)
先通过子查询获取所有Items与value1的唯一组合,再对value1求和。这种方式即使不同Items有相同的value1,也会各自计入总和,更贴合多数业务场景:
SELECT SUM(value1) AS total_value1 FROM ( SELECT DISTINCT Items, value1 FROM your_table ) AS distinct_item_values;
替换your_table为你的实际表名即可。在你的示例数据中,子查询会返回3条唯一记录:(First,50)、(Second,20)、(Third,30),求和结果正好是100。
方法二:直接对去重后的value1求和
如果你的业务需求是所有重复的value1无论所属Items都只算一次,可以直接使用SUM(DISTINCT):
SELECT SUM(DISTINCT value1) AS total_value1 FROM your_table;
注意:这种方式下,如果有两个不同Items的value1相同(比如新增Fourth项,value1也是50),则50只会被计算一次,总和会变成50+20+30=100,而不是50+20+30+50=150。根据你的实际业务需求选择即可。
内容的提问来源于stack exchange,提问作者Hadi Mirdamadi
相关产品推荐
相关产品推荐

