【问题标题】:Postgres select (group by type) [duplicate]Postgres选择(按类型分组)[重复]
【发布时间】:2016-04-21 20:46:47
【问题描述】:

我有这样的表:

ID     NAME      TYPE  RATING
1      name1      1      98
2      name2      1      17
3      name3      2      77
4      name4      2      53
5      name5      2      23
6      name6      4      64
7      name7      3      78
8      name8      3      56
9      name9      3      22
10     name10     4      56
11     name11     4      99
.      ...        .      ..

我如何从这个表中选择,例如只有 (2,3...etc, N) 行的每个“类型”具有最高评分?

结果示例(2行):

ID     NAME      TYPE  RATING
1      name1      1      98
2      name2      1      17
3      name3      2      77
4      name4      2      53
7      name7      3      78
8      name8      3      56
6      name6      4      64
11     name11     4      99
.      ...        .      ..

【问题讨论】:

    标签: sql postgresql select group-by greatest-n-per-group


    【解决方案1】:

    您可以使用row_number 窗口函数为每行按类型分配排名:

    SELECT id, name, type, rating
    FROM   (SELECT id, name, type, rating,
                   ROW_NUMBER() OVER (PARTITION BY type ORDER BY rating DESC) AS rn
            FROM   myable)
    WHERE  rn <= 3; -- Or any other number of rows per type you wish
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多