我有这样一条sql语句:
select a.id, a.valfrom ...
inner join ...
where ...;
结果我有这个:
id val
---------
3 10
3 10
3 10
9 21
9 21
11 2
11 2
13 30
所以你可以看到,一个id有一个值。
如果我按 (a.id) 分组,我会得到:
id val
---------
3 10
9 21
11 2
13 30
我想得到的最后一个结果是总和: 10+21+2+30 = 63。
那么我怎样才能把总和作为一个结果呢? 如果我做一个 sum(a.val) 并使用 group by (a.id) 我不会得到 63,我会得到每个 id 的总和,例如 id=3 -> 10+10+10 = 30。
最好的问候。
最佳答案
那么您不需要 GROUP BY。您也无法在标准 SQL 中正确选择 ID。你只想:
SELECT SUM(val) FROM (SELECT DISTINCT id, val FROM ...) AS foo
但是,MySQL 支持对标准 SQL 语法的一些扩展,这可能使这项工作可行:
SELECT DISTINCT id, SUM(val) FROM ...
关于sql - 分组依据/不同与总和相结合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3237588/