假设一个表有这个模式:
grp | number
1 | 10
1 | 10
1 | 10
2 | 30
2 | 30
3 | 20
请注意,每个唯一的 grp 都有一个唯一的编号,即使有超过 1 个 grp。我希望对每个唯一 grp 的所有数字求和。
所以我想按 grp 对我的表进行分组:
grp | number
1 | 10
2 | 30
3 | 20
然后得到总和,现在是 60,但如果不分组,它会得到 110,因为它计算所有内容的总和而不分组。全部在一个查询中,如果可能,没有子查询。
我已尝试执行以下操作:
SELECT sum(number) as f
FROM ...
WHERE ...
GROUP BY grp
但这行不通,它返回的是多个结果而不是求和的单个结果。我做错了什么?
最佳答案
您可以使用子查询来选择唯一记录并执行sum
:
select sum(number)
from (select distinct grp, number
from table t
) t;
关于mysql - Group by with sum 不返回正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53739873/