我有以下要求
我使用rank() ( partition by Name order by sum(marks)) as rank
之类的条件,我将等级值作为Rank_Coming列,但我期待像Rank expected列这样的值。
请建议如何实现此目标
由于
答案 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)