一个比较直观的脚本,以比较不同的排名方法:
--CREATE TABLE
CREATE TABLE #Exam
(
Name VARCHAR(10),
Score INT
)
GO
--INSERT DATA
INSERT INTO #Exam
VALUES ('A',100),('B',90),('C',80),('D',70),('E',70),('F',60)
GO
--RETURN RESULT
SELECT Name,
Score,
ROW_NUMBER() OVER (ORDER BY Score DESC) AS ROW_NUMBER,
RANK() OVER (ORDER BY Score DESC) AS RANK,
DENSE_RANK() OVER (ORDER BY Score DESC) AS DENSE_RANK,
NTILE(3) OVER(ORDER BY Score desc) AS NTILE
FROM #Exam
得到如下结果:
RANK() 相同的值ranking一样
DENSE_RANK() 没有gap的ranking
NTILE根据参数分成若干组排名