给定一个这样的表结构:
id | name | amount | other1 | other2 | other3
和示例数据,如:
1 | a | 40 | unrelevant data | ...
2 | a | 80 | unrelevant data | ...
3 | b | 30 | unrelevant data | ...
4 | b | 50 | unrelevant data | ...
5 | c | 20 | unrelevant data | ...
6 | c | 30 | unrelevant data | ...
我希望我的选择结果压缩行并对被压缩的数量求和,我不关心丢失的数据(表示不相关数据的行):
1 | a | 120 | unrelevant data | ...
3 | b | 80 | unrelevant data | ...
5 | c | 50 | unrelevant data | ...
我试过这样的:
SELECT id, "name", SUM(amount), other1, other2, other3 FROM test_table
GROUP BY "name"
我得到了错误:
column "id" must appear in the GROUP BY clause or be used in an aggregate function
所以我知道我错过了什么。
最佳答案
您可以使用 max()
作为 id
:
SELECT MAX(id), "name", SUM(amount), MAX(other1) . . .
FROM test_table
GROUP BY "name"
关于sql - 当列值相同时,如何在 postgres 中合并行,并根据合并的行对另一列求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071365/