psql max group by 仅针对某些列

psql max group by just for some columns

我在 psql 查询中遇到问题。我不知道如何 select 仅从两列的子集中取最大值。没有例子很难说明问题,所以我写一个:

我有一个 table 这样的:

   Athlete | Category | Points

      at1  |  cat1    | 100
      at1  |  cat1    | 90
      at1  |  cat1    | 80
      at1  |  cat2    | 95
      at2  |  cat1    | 97
      at2  |  cat2    | 60
      at2  |  cat2    | 71

我想为每个运动员保留每个类别的最高分。所以最后的 table 应该是这样的:

   Athlete | Category | Points

      at1  |  cat1    | 100
      at1  |  cat2    | 95
      at2  |  cat1    | 97
      at2  |  cat2    | 71

这是 group by 子句的经典用例 return 只有 athletecategory 的不同组合。然后,max(points) 可以应用于每个组合:

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