PostgreSQL 中选择每个组的第一行
假设有一个表 seasons
| id | team | points |
|---|---|---|
| 1 | Liverpool | 82 |
| 2 | Liverpool | 84 |
| 3 | Brighton | 34 |
| 4 | Brighton | 28 |
| 5 | Liverpool | 79 |
我们想要找到每个team中包含最大点数的行。
我们期望的输出是
| id | team | points |
|---|---|---|
| 3 | Brighton | 34 |
| 2 | Liverpool | 84 |
从 SQL 编辑器,您可以运行如下查询
1select distinct2 on (team) id,3 team,4 points5from6 seasons7order BY8 id,9 points desc,10 team;这里重要的部分是
desc关键字用于按从高到低的顺序对points进行排序。distinct关键字告诉 Postgres 只返回每个 team 的一行。
如果您更喜欢 直接连接到数据库,此查询也可以通过 psql 或任何其他查询编辑器执行。