psql max group by仅适用于某些列

psql max group by仅适用于某些列,sql,postgresql,select,max,psql,Sql,Postgresql,Select,Max,Psql,我在psql查询中遇到问题。我不知道如何只从两列的子集中选择最大值。没有一个例子很难解释这个问题,所以我写了一个: 我有一张这样的桌子: Athlete | Category | Points at1 | cat1 | 100 at1 | cat1 | 90 at1 | cat1 | 80 at1 | cat2 | 95 at2 | cat1 | 97 at2 |

我在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
我想为每个运动员保留每个类别的最高分数。最后的表格应该是这样的:

   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

这是
groupby
子句只返回
运动员
类别
的不同组合的经典用例。然后,
max(points)
可应用于每个组合:

SELECT   athlete, category, MAX(points)
FROM     mytable
GROUP BY athlete, category