mysql - Group by with sum 不返回正确的结果

标签 mysql sql

假设一个表有这个模式:

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/

相关文章:

php - 使用 mysql_query 成功但使用 mysqli_query 失败的注入(inject)攻击

c# - 如何检测是否安装了MySQL?

mysql - SQL 查询以检索各种 DATE 范围内的 SUM

sql - 如果只有子记录满足特定条件,则内部联接并检索父记录

SQL 固定值 IN() 与 INNER JOIN 性能

SQL Server NOT EXISTS 效率

mysql - 通过两个表的 JOIN 获取 DISTINCT 记录

sql - MySQL:将一个表拆分为多个表(相同列)以提高性能?

php - 如果 ID 不在数据库中则插入记录,否则更新它

php - 按国家名称获取用户 ID