我在psql查询中遇到问题。我不知道如何仅从两列的子集中选择最大值。没有例子就很难解释这个问题,所以我写了一个:
我有一张这样的表:
Athlete | Category | Points
at1 | cat1 | 100
at1 | cat1 | 90
at1 | cat1 | 80
at1 | cat2 | 95
at2 | cat1 | 97
at2 | cat2 | 60
at2 | cat2 | 71
我想为每位运动员保留每个类别的最高分。所以决赛桌应该是这样的:
Athlete | Category | Points
at1 | cat1 | 100
at1 | cat2 | 95
at2 | cat1 | 97
at2 | cat2 | 71
答案 0 :(得分:3)
这是group by
子句的经典用例,只返回athlete
和category
的不同组合。然后,max(points)
可以应用于每个组合:
SELECT athlete, category, MAX(points)
FROM mytable
GROUP BY athlete, category