| 函數 | 相同值處理 | 編號連續性 | 典型用途 |
|---|---|---|---|
| ROW_NUMBER() | 強制唯一編號 | 連續 | 分頁、去重保留首筆 |
| RANK() | 同名次,跳號 | 不連續 | 競賽排名 |
| DENSE_RANK() | 同名次,不跳號 | 連續 | 密集排名 |
| NTILE(n) | 分桶,前桶優先多分配 | 分組編號 | 分位數、分桶分析 |
FUNCTION() OVER (PARTITION BY col1 ORDER BY col2)
PARTITION BY:分組獨立編號。ORDER BY:決定編號順序,可與外層 ORDER BY 不同。WITH cte AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY CreateDate DESC) AS rn
FROM Articles
)
SELECT * FROM cte WHERE rn BETWEEN 11 AND 20; -- 第 2 頁,每頁 10 筆
規則:
例:59 筆資料分 5 桶 → 前 4 桶各 12 筆,第 5 桶 11 筆。