sql-为每个组选择具有最低值的单个ID

时间:2019-05-16 10:50:01

标签: sql sql-server

请考虑下表:

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列,这使我感到困惑。

有人知道该怎么做吗?

1 个答案:

答案 0 :(得分:5)

使用row_number()

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