RANK 次序函數

淺談使用T-SQL次序函數 Rank

陶逸靜 2020/12/29 16:50:42
1585

淺談使用T-SQL次序函數  RANK

 

1.    前言

n         在此篇文章中淺談專案在計算新客戶的計數上使用到的次序函數 RANK

n         SQL Server 2005以後就開始提供一些好用的視窗函數(Window Function),次序函數為其中一項好用的函數

n         視窗函數--前身為OLAP 函數。

 

2.    RANK:回傳結果集分割區內每個資料列的次序。資料列的次序等於一加上前述資料列之前的次序數目。

n        ROW_NUMBER RANK兩者很類似。

ROW_NUMBER依序為所有資料列編號 (例如 12345) RANK則對所有資料列中相同數值列提供相同的序號 (例如 12245)

n        SQL語法

RANK ( ) OVER ( [ partition_by_clause ] order_by_clause )

 

3.    專案在計算新客戶的計數上使用到的RANK()函數範例說明。

n       使用資料

會員在不同的通路下的交易日期的資料表。如圖()

 

 

n         SQL script:

以會員在不同的通路下依交易日期進行排序(RANK)

      

 

n       執行SQL結果,():

 

 

n       ()中會員代號為287的客戶在CDLY通路進行的交易共有七筆, 但有四筆在同一時間進行交易,使用RANK 的結果排序如圖();也就是對所有資料列中相同數值列提供相同的序號à1234444 (如前述說明)

 

 

n       因專案要取得的各個通路的新客戶故再對Rank進行條件篩選取得如下結果圖()

 

 

n       上述資料結果,再提供給報表進行統計,如下結果圖()

              

 

參考資料:

https://docs.microsoft.com/zh-tw/sql/t-sql/functions/rank-transact-sql?view=sql-server-ver15

 

 

 

陶逸靜