如何使用Microsoft SQL Server从输入中获取输出? (基本上选择每个ID的行,其中投票最多)。
输入
ID Label Vote
-----------------------
79185673 2 3
79185673 0 17
79185724 4 5
79185724 1 13
79185724 0 2
79185900 1 17
79185900 2 1
79185900 4 2
79186190 3 3
79186190 2 17
输出
ID Label Vote
-----------------------
79185673 0 17
79185724 1 13
79185900 1 17
79186190 2 17
答案 0 :(得分:4)
使用 ROW_NUMBER
或 DENSE_RANK
功能,按ID
的降序排列每Vote
个等级列,然后选择排名为1的行。
我更喜欢 DENSE_RANK
功能,因为它会为相同的Vote
值提供相同的排名。
<强>查询强>
;with cte as(
select [rank] = DENSE_RANK() over(
partition by [ID]
order by [Vote] desc
), *
from [your_table_name]
)
select [ID], [Label], [Vote] from cte
where [rank] = 1;