Tim*_*Tim 4 mysql sql aggregate-functions
我有这样的sql语句:
select a.id, a.valfrom ...
inner join ...
where ...;
Run Code Online (Sandbox Code Playgroud)
结果我有这个:
id val
---------
3 10
3 10
3 10
9 21
9 21
11 2
11 2
13 30
Run Code Online (Sandbox Code Playgroud)
所以你可以看到,一个id有一个值.
如果我按(a.id)进行分组,我得到:
id val
---------
3 10
9 21
11 2
13 30
Run Code Online (Sandbox Code Playgroud)
我想得到的最后一个结果是总和:10 + 21 + 2 + 30 = 63.
那么如何才能将总和作为单一结果?如果我做一个总和(a.val)并使用group by(a.id)我得不到63,我得到每个id的总和,例如id = 3 - > 10 + 10 + 10 = 30.
最好的祝福.
Bor*_*lid 11
那么你不需要GROUP BY.您也无法在标准SQL中正确选择ID.你只想要:
SELECT SUM(val) FROM (SELECT DISTINCT id, val FROM ...) AS foo
但是,MySQL支持标准SQL语法的一些扩展,可以使这个工作:
SELECT DISTINCT id, SUM(val) FROM ...