1、ROW_NUMBER()函數作用就是將SELECT查詢到的數據進行排序,每一條數據加一個序號
SELECT
ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;
SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores
) t WHERE t.RANK=2;
2、RANK()函數,顧名思義排名函數,可以對某一個字段進行排名
SELECT RANK() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;
3、DENSE_RANK()函數也是排名函數,和RANK()功能相似,也是對字段進行排名
SELECT
DENSE_RANK() OVER (ORDER BY SCORE DESC) AS [RANK],*
FROM Scores;
4、NTILE()函數是將有序分區中的行分發到指定數目的組中,各個組有編號,編號從1開始,就像我們說的'分區'一樣 ,分為幾個區,一個區會有多少個
SELECT NTILE(1) OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;
SELECT NTILE(2) OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;
SELECT NTILE(3) OVER (ORDER BY SCORE DESC) AS [RANK],* FROM Scores;