【问题标题】:sql - select single ID for each group with the lowest valuesql - 为具有最低值的每个组选择单个 ID
【发布时间】:2019-10-03 15:07:21
【问题描述】:

考虑下表:

ID      GroupId     Rank
1       1           1
2       1           2
3       1           1
4       2           10
5       2           1
6       3           1           
7       4           5

我需要一个 sql(用于 MS-SQL)选择查询,为每个排名最低的组选择一个 Id。每个组只需要返回一个 ID,即使有两个具有相同的排名(如上表中的 1 和 2)。我试图选择最小值,但是只返回一个,并且要返回的值是 ID 列的要求是抛出我。

有人知道怎么做吗?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    使用row_number():

    select t.*
    from (select t.*,
                 row_number() over (partition by groupid order by rank) as seqnum
          from t
         ) t
    where seqnum = 1;
    

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      • 2012-01-04
      • 2019-12-07
      相关资源
      最近更新 更多