数据库

PostgreSQL 中选择每个组的第一行


假设有一个表 seasons

idteampoints
1Liverpool82
2Liverpool84
3Brighton34
4Brighton28
5Liverpool79

我们想要找到每个team中包含最大点数的行。

我们期望的输出是

idteampoints
3Brighton34
2Liverpool84

SQL 编辑器,您可以运行如下查询

1
select distinct
2
on (team) id,
3
team,
4
points
5
from
6
seasons
7
order BY
8
id,
9
points desc,
10
team;

这里重要的部分是

  • desc 关键字用于按从高到低的顺序对 points 进行排序。
  • distinct 关键字告诉 Postgres 只返回每个 team 的一行。

如果您更喜欢 直接连接到数据库,此查询也可以通过 psql 或任何其他查询编辑器执行。