sqlserver 使用總結

一、sqlserver 排序  rank()函數

使用方法:和row_number() over(order by 字段名稱 desc) 使用方法類似

eg: select  rank() over(order by age desc) from students ( styudent 表裏面有字段 int 類型age字段 ) 如果有2個相同的age值,則並列

例子SELECT RANK() OVER (ORDER BY Age) AS [Rank by Age],
FirstName,
Age
FROM Person輸出如下:Rank by Age                 FirstName         Age
-------------------- ---------- -----------
1                           Larry             5
2                           Doris             6
2                           George            6
4                           Mary              11
4                           Sherry            11
6                           Sam               17
7                           Ted               23
7                           Marty             23
9                           Sue               29
10                          Frank             38
11                          John              40

看到了麼,同年嶺的話,將有相同的順序,順序成1,2,2,4了。

二、ntile( )函數

SELECT FirstName,
Age,
NTILE(3) OVER (ORDER BY Age) AS [Age Groups]
FROM Person

輸出結果:
FirstName        Age               Age Groups
---------- ----------- --------------------
Larry                5                  1
Doris                6                  1
George            6                  1
Mary                11                1
Sherry             11                 2
Sam                17                 2
Ted                 23                 2
Marty              23                 2
Sue                29                 3
Frank             38                 3
John               40                 3
這個函數按照ntile(n)中的N,把記錄強制分成多少段,11條記錄現在分成3段了,lary到mary是第1段,sherry到maty是第2段,sue到john是第3段 了。

三、DENSE_RANK( )函數
         SELECT DENSE_RANK() OVER (ORDER BY Age) AS [Dense Rank by Age], 
         FirstName, 
         Age
         FROM Person

輸出結果爲:
Dense Rank by Age          FirstName        Age
-------------------- ---------- -----------
1                          Larry            5
2                          Doris            6
2                          George           6
3                          Mary             11
3                          Sherry           11
4                          Sam              17
5                          Ted              23
5                          Marty            23
6                          Sue              29
7                          Frank            38
8                          John             40

看到了麼,和rank函數區別是,順序始終是連續的,Doris 和George同年,都是排第2位,但之後的mary不象rank函數那樣排第4,而是排第3位了




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章