0
排名計算下面我有要求在SQL SERVER
我使用的條件一樣rank() (partition by Name order by sum(marks)) as rank
,我得到的等級值作爲Rank_Coming列,但我期待像預期的排名列中的值。
請建議如何實現這一
感謝
排名計算下面我有要求在SQL SERVER
我使用的條件一樣rank() (partition by Name order by sum(marks)) as rank
,我得到的等級值作爲Rank_Coming列,但我期待像預期的排名列中的值。
請建議如何實現這一
感謝
你排名想到的是不GROUP BY Name -- PARTITION BY Name
。這是ORDER BY Name
試試這個:
DENSE_RANK() OVER(ORDER BY Name)
你需要得到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
非常感謝你的答覆,但它是直接跳轉到3,沒有顯示2,我需要顯示兩個下一行,2處缺失我的結果 –
您使用'DENSE_RANK()'而不是'RANK()'。我剛剛修復了我的代碼 –
但在我的情況下,它應該是由商標和名稱組成的,這個代碼按照字母順序排列名稱,而不考慮商標,請問您能建議做什麼 –