【发布时间】:2021-09-25 03:07:57
【问题描述】:
我不明白sum 的工作原理。
对于 dbeaver 中的 PostgreSQL 表:
| a | b | c | d |
|---|---|---|---|
| 1 | 2 | 3 | 2 |
| 1 | 2 | 4 | 3 |
| 2 | 1 | 3 | 2 |
| 2 | 1 | 4 | 2 |
| 3 | 2 | 4 | 2 |
查询
select a, b, c, d, sum(c) as sum_c, sum(d) as sum_d from abc a group by a, b, c, d
生产
| a | b | c | d | sum_c | sum_d |
|---|---|---|---|---|---|
| 1 | 2 | 3 | 2 | 3 | 2 |
| 1 | 2 | 4 | 3 | 4 | 3 |
| 2 | 1 | 3 | 2 | 3 | 2 |
| 2 | 1 | 4 | 2 | 4 | 2 |
| 3 | 2 | 4 | 2 | 4 | 2 |
我不明白为什么:我预计每行中的sum_c 将是18,这是c 中的值的总和,出于同样的原因,sum_d 将是11。
为什么sum_c 和sum_d 只是在每一行中复制c 和d 中的值?
【问题讨论】:
-
你
group by a, b, c, d。这意味着您会得到每组 a、b、c、d 的总和。 -
@alekscooper 根据您的期望,所有行的 sum_c 和 sum_d 的值都相同,这实际上是您想要的吗?
-
@forpas 我应该如何分组以获得整列的总和,请您解释一下吗?
-
您的预期结果是什么?
-
查询可能在语法上是正确的并提供结果,但
group by不是做你想做的事的方法。检查我的答案,还可以通过谷歌搜索“sql group by”以获取更多信息。
标签: postgresql group-by sum aggregate-functions window-functions