| 函数名 | 说明 |
|---|
| row_number | 行号 |
| rank | 排名 |
| dense_rank | 稠密的排名 |
| ntile | 按百分比分组排名 |
SELECT
score
,ROW_NUMBER() OVER(ORDER BY score desc) AS a_row_number
,RANK() OVER(ORDER BY score desc) AS a_rank
,DENSE_RANK() OVER(ORDER BY score desc) AS a_dense_rank
,NTILE(3) OVER(ORDER BY score desc) AS a_ntile3
,NTILE(4) OVER(ORDER BY score desc) AS a_ntile4
FROM (
SELECT 99 AS score UNION ALL
SELECT 98 AS score UNION ALL
SELECT 98 AS score UNION ALL
SELECT 97 AS score
) a;

| score | row number | rank | dense rank | ntile 3 | ntile 4 |
|---|
| 99 | 1 | 1 | 1 | 1 | 1 |
| 98 | 2 | 2 | 2 | 1 | 2 |
| 98 | 3 | 2 | 2 | 2 | 3 |
| 97 | 4 | 4 | 3 | 3 | 4 |
ntile逻辑如下
| score | percentage | ntitle 3 | ntitle 4 |
|---|
| 99 | 0 | 1 [0,33) | 1 [0,25) |
| 98 | 25 | 1 [0,33) | 2 [25,50) |
| 98 | 50 | 2 [33,67) | 3 [50,75) |
| 97 | 75 | 3 [67,100) | 4 [75,100) |