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

SQL Server 2008 排序視窗函數完整比較

     編輯:關於SqlServer

四大排序函數 ROW_NUMBER、RANK、DENSE_RANK、NTILE 差異與範例。

測試資料

CREATE TABLE test (iname VARCHAR(20), iage INT);
INSERT INTO test VALUES ('A',10),('B',20),('B',20),('C',30),('D',40);

函數比較

函數語法特性範例結果 (依 iname DESC)
ROW_NUMBERROW_NUMBER() OVER (ORDER BY iname DESC)唯一連續編號,不重複1,2,3,4,5
RANKRANK() OVER (ORDER BY iname DESC)相同值同名次,名次跳號1,2,2,4,5
DENSE_RANKDENSE_RANK() OVER (ORDER BY iname DESC)相同值同名次,名次不跳號1,2,2,3,4
NTILE(n)NTILE(5) OVER (ORDER BY iname DESC)分成 n 組,分配組號1,1,2,2,3 (5組)

程式碼範例

SELECT iname, iage,
       ROW_NUMBER() OVER (ORDER BY iname DESC) AS rn,
       RANK() OVER (ORDER BY iname DESC) AS rk,
       DENSE_RANK() OVER (ORDER BY iname DESC) AS drk,
       NTILE(3) OVER (ORDER BY iname DESC) AS nt
FROM test;

應用場景

  • ROW_NUMBER:分頁、去重 (保留第一筆)。
  • RANK:競賽排名 (並列跳號)。
  • DENSE_RANK:薪資等級、分數等第 (不跳號)。
  • NTILE:分位數分析 (四分位、十分位)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved