根据SQL Server

时间:2017-11-21 11:52:09

标签: sql sql-server

如何使用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

1 个答案:

答案 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;