sql - psql max group by 仅针对某些列

标签 sql postgresql select max psql

我在 psql 查询中遇到问题。我不知道如何从两列的子集中选择最大值。没有例子很难解释这个问题,所以我写了一个:

我有一张这样的 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 子句的一个经典用例,它只返回 athletecategory 的不同组合。然后,max(points) 可以应用于每个组合:

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

关于sql - psql max group by 仅针对某些列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30817316/

相关文章:

sql - 更改 SQL 的根密码

mysql - COUNT() 和 Left Join 不起作用

postgresql - Postgres 不允许我登录

mysql - 没有 WHERE 语句的 INT 比较

javascript - 高亮文本问题

sql - 创建列并在一个 select 语句中对其进行过滤

mysql - SQL不允许表中有重复记录

mysql - 查找给定分层数据子树中的最低节点

sql - 仅返回此 ActiveRecord 查询中的唯一记录

postgresql 在一个结果中显示两个子列表