请考虑下表:
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列,这使我感到困惑。
有人知道该怎么做吗?
答案 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;