【问题标题】:Postgresql getting other information from max tuplePostgresql 从 max tuple 获取其他信息
【发布时间】:2016-12-09 20:54:22
【问题描述】:

假设您有一张表,其中包含学生 ID、班级、年级。我想要每个班级的最高分。这很容易,只需按班级分组并获得最高(等级)。但我遇到的问题是如何获取学生 ID。

【问题讨论】:

标签: sql postgresql max aggregate-functions greatest-n-per-group


【解决方案1】:

您可以使用窗口函数来代替聚合函数:

SELECT class, grade, studentId
FROM   (SELECT class, grade, studentId, 
               RANK() OVER (PARTITION BY class ORDER BY grade DESC) rk
        FROM   students)
WHERE  rk = 1

【讨论】:

    【解决方案2】:

    我认为distinct on 是一个不错的选择:

    select distinct on (s.class) s.*
    from students
    order by s.class, s.grade desc;
    

    但是,您可能希望每个班级的所有名学生获得最高分。如果是这样,Mureinik 的解决方案会更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-21
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多