sql - 当列值相同时,如何在 postgres 中合并行,并根据合并的行对另一列求和?

标签 sql postgresql group-by sum aggregate-functions

给定一个这样的表结构:

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/

相关文章:

PostgreSQL:从列值将间隔添加到时间戳

sql - 使用 Postgres 的递归/分层查询

mysql - 从同一张表中选择分组依据

sql - 我想通过 MS SQL 中的交替数字进行排序,例如 1、2、3、1、2、3 等

sql - 仅当特定用户更新行时触发 SQL 触发器

Linq GroupBy 如果它们被其他键分隔,则不合并具有相同键的分组

mysql - 如何按组分隔两列计数?

mysql - 在 MySQL 中批量插入 SQL 查询

mysql - 逗号分隔的 TEXT 字段上的 SQL QUERY

php - MySQL 24 小时平均 10 分钟