数据库

在PostgreSQL中获取每个分组的第一行


给定一个表 seasons

id球队积分
1Liverpool82
2Liverpool84
3Brighton34
4Brighton28
5Liverpool79

我们需要找出每支球队积分最高的记录。

期望的输出结果是:

id球队积分
3Brighton34
2Liverpool84

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

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

关键点在于:

  • 使用 desc 关键字将 points 按从高到低排序
  • 使用 distinct 关键字告诉 Postgres 每支球队只返回一行记录

如果您更倾向于直接连接数据库,也可以通过 psql 或其他查询编辑器执行此查询。