示例
示例
SELECT name, score,
RANK() OVER (ORDER BY score DESC) AS rnk,
DENSE_RANK() OVER (ORDER BY score DESC) AS drnk
FROM exams;| 并列 | 同分值同名次 |
|---|---|
| 跳号 | 1,1,3,4… |
| 取前 N | RANK() <= N 会包含并列行 |
按排序值排名:并列名次相同,后续名次跳号(1,1,3…);取“前 N 名含并列”用 RANK 而不是 ROW_NUMBER。
SELECT name, score,
RANK() OVER (ORDER BY score DESC) AS rnk,
DENSE_RANK() OVER (ORDER BY score DESC) AS drnk
FROM exams;| 并列 | 同分值同名次 |
|---|---|
| 跳号 | 1,1,3,4… |
| 取前 N | RANK() <= N 会包含并列行 |