首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 視窗排序函數完整指南:ROW_NUMBER、RANK、DENSE_RANK、NTILE

     編輯:關於SqlServer

四大排名函數比較

函數相同值處理編號連續性典型用途
ROW_NUMBER()強制唯一編號連續分頁、去重保留首筆
RANK()同名次,跳號不連續競賽排名
DENSE_RANK()同名次,不跳號連續密集排名
NTILE(n)分桶,前桶優先多分配分組編號分位數、分桶分析

語法共同點

FUNCTION() OVER (PARTITION BY col1 ORDER BY col2)
  • PARTITION BY:分組獨立編號。
  • ORDER BY:決定編號順序,可與外層 ORDER BY 不同。

ROW_NUMBER 分頁實戰

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 筆

NTILE 分桶演算法

規則:

  1. 編號較小的桶筆數 ≥ 編號較大的桶。
  2. 從某桶開始筆數固定,後續桶筆數相同。

例:59 筆資料分 5 桶 → 前 4 桶各 12 筆,第 5 桶 11 筆。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved