sql - 分组依据/不同与总和相结合?

标签 sql mysql aggregate-functions

我有这样一条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/

相关文章:

Java 解析 Oracle 解释计划

mysql - 过滤查询大约需要 50 秒才能加载

mysql - 以下哪种 SQL 方法是最佳的?

C# SQL 查询输出到 Excel 不包括输出中新添加的字段

sql - 如何根据某个时间范围进行聚合

sql - SQL Server 中 SUM() 的对应项是什么?

MySQL - 添加连接更改计数/总和值?

MySQL从最早的一天计算连续天数

c# - 如何使用复合表将多个值输入到数据库表中?

html - MySQLdb._exceptions.OperationalError : (1136, "Column count doesn' t 行 1 处的匹配值计数")