分组/分明与总和相结合?

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 ...