计算Sql server的Rank

时间:2015-12-10 05:48:24

标签: sql-server

我有以下要求

enter image description here

我使用rank() ( partition by Name order by sum(marks)) as rank之类的条件,我将等级值作为Rank_Coming列,但我期待像Rank expected列这样的值。

请建议如何实现此目标

由于

2 个答案:

答案 0 :(得分:1)

您需要先获取SUM,然后在排名中使用它。

;WITH CteSum AS(
    SELECT *,
        SumMarks = SUM(Marks) OVER(PARTITION BY Name)
    FROM tbl
),
CteRnk AS(
    SELECT *,
        rnk = DENSE_RANK() OVER(ORDER BY SumMarks DESC)
    FROM CteSum
)
SELECT * FROM CteRnk

答案 1 :(得分:1)

您排名期望 GROUP BY Name -- PARTITION BY Name。它是ORDER BY Name

试试这个:

DENSE_RANK() OVER(ORDER BY Name)