函式簡介
返回結果集分區內指定欄位的值的排名,指定欄位的值的排名是相關行之前的排名加一。
函式語法
RANK() OVER([<partition_by_clause>]<order by clause>)
函式參數
partition_by_clause 將from子句生成的結果集劃分為套用到RANK函式的分區。
Order_by_clause確定將RANK值套用到分區中的行時所使用的順序。
SQL示例
以下用一個成績表作示例
table 架構
s_score(s_class(班級),s_id(學號),s_score(分數))
SQL statement1:
Select rank() over(order by s_score desc) as 名次,s_class,s_id,s_score from s_score
結果集如下
名次 s_class s_id s_score
1 二班 S20090733 100
2 一班 S20090635 99
3 三班 S20090919 97
4 一班 S20090846 96
5 一班 S20090825 95
6 二班 S20090715 94
7 三班 S20090836 91
8 二班 S20090631 86
SQL statement2:
Select rank() over(partition by s_class order by s_score desc) as 名次,s_class,s_id,s_score from s_score
結果集如下
名次 s_class s_id s_score
1 三班 S20090919 97
2 三班 S20090836 91
1 二班 S20090733 100
2 二班 S20090715 94
3 二班 S20090631 86
1 一班 S20090635 99
2 一班 S20090846 96
3 一班 S20090825 95
EXCEL示例
再舉列一個比較簡單的,這樣子更容易看明白:
假如A列從A1單元格起,依次有數據80、98、65、79、65。
在B1中編輯公式
=RANK(A1,$A$1:$A$5,0)
回車確認後,向下複製公式到B5單元格。
效果:
從B1單元格起依次返回值為2、1、4、3、4。
注意:
公式中的參數0(零)或省略,Excel 對數字的排位是把數據從大到小的降序排列,也就是說數值最大的排名第1。
再試試看:
在C1中編輯公式
=RANK(A1,$A$1:$A$5,1)
回車確認後,向下複製公式到B5單元格。
此時從C1單元格起依次返回的值是4、5、1、3、1。
也就是說,此時A列中數據是按從小到大排列名次的,最小的數值排位第1,最大的數值排位最末
【如何使用RANK 平均的等級值為限制的觀察值】
將數字數據轉換為秩時, 可能要用於表示扎以便限制的觀察每個接收的平均等級上的最小可能的秩而不是所有此類的觀察值。在這篇文章中數值的示例闡釋這一點。
雖然當前版本的 RANK 返回相應的結果對於大多數情況下,本文討論了一個領帶發生這種情況。例如對於您可能需要處理扎,如果您正在使用非參數化的統計假設測試涉及秩的 RANK。
Excel RANK 幫助
本文介紹的方法,還會介紹 Microsoft Office Excel 2003 和更高版本的 Excel RANK 幫助檔案中 (但不是在更早版本的 RANK 幫助檔案中)。此過程同樣適用於所有版本的 Excel。RANK 函式本身不變。
語法
RANK(number, ref, order)
注意Number 必須有一個數字值 ; ref 必須是一個數組或單元格區域包含數字數據值 ; 是可選的 order。如果省略 order,或者將它分配一個值為 0 (零) number 排位是數字的數字的在 ref 中 number 位置,如果 ref 數字的數字的按降序順序排序。如果 order 分配任何非零值,假定 ref 為排名按升序排序。
用法的示例
為了說明這種用法的 RANK,創建一個空白 Excel 工作表、 複製下表,選中您空白 Excel 工作表中的單元格 A1,然後在 編輯選單上單擊 貼上,以便在下表中的項將填充工作表中的單元格 A1:F12。
注意在 Microsoft Office Excel 2007 年 貼上命令是在 開始選項卡上的 剪貼簿組中。 收起該表格展開該表格
10 | =rank(a1,$a$1:$a$12,1) | = b1 + (COUNT($A$1:$A$12) + 1-RANK($A1,$A$1:$A$12,0)-RANK($A1,$A$1:$A$12,1)) / 2 | =rank(a1,$a$1:$a$12,0) | = e1 + (COUNT($A$1:$A$12) + 1-RANK($A1,$A$1:$A$12,0)-RANK($A1,$A$1:$A$12,1)) / 2 | |
21 | =rank(a2,$a$1:$a$12,1) | = b2 + (COUNT($A$1:$A$12) + 1-RANK($A2,$A$1:$A$12,0)-RANK($A2,$A$1:$A$12,1)) / 2 | =rank(a2,$a$1:$a$12,0) | = e2 + (COUNT($A$1:$A$12) + 1-RANK($A2,$A$1:$A$12,0)-RANK($A2,$A$1:$A$12,1)) / 2 | |
21 | =rank(a3,$a$1:$a$12,1) | = b3 + (COUNT($A$1:$A$12) + 1-RANK($A3,$A$1:$A$12,0)-RANK($A3,$A$1:$A$12,1)) / 2 | =rank(a3,$a$1:$a$12,0) | = e3 + (COUNT($A$1:$A$12) + 1-RANK($A3,$A$1:$A$12,0)-RANK($A3,$A$1:$A$12,1)) / 2 | |
21 | =rank(a4,$a$1:$a$12,1) | = b4 + (COUNT($A$1:$A$12) + 1-RANK($A4,$A$1:$A$12,0)-RANK($A4,$A$1:$A$12,1)) / 2 | =rank(a4,$a$1:$a$12,0) | = e4 + (COUNT($A$1:$A$12) + 1-RANK($A4,$A$1:$A$12,0)-RANK($A4,$A$1:$A$12,1)) / 2 | |
21 | =rank(a5,$a$1:$a$12,1) | = b5 + (COUNT($A$1:$A$12) + 1-RANK($A5,$A$1:$A$12,0)-RANK($A5,$A$1:$A$12,1)) / 2 | =rank(a5,$a$1:$a$12,0) | = e5 + (COUNT($A$1:$A$12) + 1-RANK($A5,$A$1:$A$12,0)-RANK($A5,$A$1:$A$12,1)) / 2 | |
33 | =rank(a6,$a$1:$a$12,1) | = b6 + (COUNT($A$1:$A$12) + 1-RANK($A6,$A$1:$A$12,0)-RANK($A6,$A$1:$A$12,1)) / 2 | =rank(a6,$a$1:$a$12,0) | = e6 + (COUNT($A$1:$A$12) + 1-RANK($A6,$A$1:$A$12,0)-RANK($A6,$A$1:$A$12,1)) / 2 | |
33 | =rank(a7,$a$1:$a$12,1) | = b7 + (COUNT($A$1:$A$12) + 1-RANK($A7,$A$1:$A$12,0)-RANK($A7,$A$1:$A$12,1)) / 2 | =rank(a7,$a$1:$a$12,0) | = e7 + (COUNT($A$1:$A$12) + 1-RANK($A7,$A$1:$A$12,0)-RANK($A7,$A$1:$A$12,1)) / 2 | |
52 | =rank(a8,$a$1:$a$12,1) | = b8 + (COUNT($A$1:$A$12) + 1-RANK($A8,$A$1:$A$12,0)-RANK($A8,$A$1:$A$12,1)) / 2 | =rank(a8,$a$1:$a$12,0) | = e8 + (COUNT($A$1:$A$12) + 1-RANK($A8,$A$1:$A$12,0)-RANK($A8,$A$1:$A$12,1)) / 2 | |
52 | =rank(a9,$a$1:$a$12,1) | = b9 + (COUNT($A$1:$A$12) + 1-RANK($A9,$A$1:$A$12,0)-RANK($A9,$A$1:$A$12,1)) / 2 | =rank(a9,$a$1:$a$12,0) | = e9 + (COUNT($A$1:$A$12) + 1-RANK($A9,$A$1:$A$12,0)-RANK($A9,$A$1:$A$12,1)) / 2 | |
52 | =rank(a10,$a$1:$a$12,1) | = b10 + (COUNT($A$1:$A$12) + 1-RANK($A10,$A$1:$A$12,0)-RANK($A10,$A$1:$A$12,1)) / 2 | =rank(a10,$a$1:$a$12,0) | = e10 + (COUNT($A$1:$A$12) + 1-RANK($A10,$A$1:$A$12,0)-RANK($A10,$A$1:$A$12,1)) / 2 | |
61 | =rank(a11,$a$1:$a$12,1) | = b11 + (COUNT($A$1:$A$12) + 1-RANK($A11,$A$1:$A$12,0)-RANK($A11,$A$1:$A$12,1)) / 2 | =rank(a11,$a$1:$a$12,0) | = e11 + (COUNT($A$1:$A$12) + 1-RANK($A11,$A$1:$A$12,0)-RANK($A11,$A$1:$A$12,1)) / 2 | |
73 | =rank(a12,$a$1:$a$12,1) | = b12 + (COUNT($A$1:$A$12) + 1-RANK($A12,$A$1:$A$12,0)-RANK($A12,$A$1:$A$12,1)) / 2 | =rank(a12,$a$1:$a$12,0) | = e12 + (COUNT($A$1:$A$12) + 1-RANK($A12,$A$1:$A$12,0)-RANK($A12,$A$1:$A$12,1)) / 2 |
注意您將此表貼上到新的 Excel 工作表後,單擊 貼上選項按鈕,然後單擊 匹配目標格式。
在 Excel 2003 年的貼上區域仍處於選中狀態的情況下使用指向 格式選單上的 列,然後單擊 列寬。
在 Excel 2007 年的貼上區域仍處於選定狀態在 開始選項卡上的 單元格組中單擊 格式,然後單擊 自動調整列寬。
某些用於您可能希望使用考慮重複的級別的定義。這樣做將以下的修正因素添加到返回的 RANK 值中。該修正因素是合適的降序計算排位的位置 (order = 0 或省略) 或按升序順序 (order = 非零值)。 (COUNT(ref) + 1 – RANK(number, ref, 0) – RANK(number, ref, 1))/2.
在工作表說明了此級別的定義。數據是單元格 A1:A12。在單元格 B1:B12 是按升序返回的 RANK 的秩。中的單元格 A2:A5 觀察常見值為 21 與相關聯。這將產生常見排位為 2。沒有一個較低排名觀察,10。這些四個值的 21 占用的排名位置 2、 3、 4 和 5 並且有一個平均排位 (2 + 3 + 4 + 5) / 4 = 3.5。同樣,兩個的觀察值中的單元格 A6:A7 每 33,有與低級別的五個觀察值。因此,這些兩個觀察值占用的排名位置 6 和 7,並且有一個平均排位 (6 + 7) / 2 = 6.5。最後,三個的觀察值的單元格 A8:A10 中有一個公共值 52。沒有與低級別的七個觀察值。因此,這些三個觀察值占用 8、 9 和 10 的排名位置和具有的 (8 + 9 + 10) 的平均秩 / 3 = 9。
在 C 列中的項包含修正係數為限制的秩,並顯示這些平均秩扎考慮在內。在列 B 和 C 列中的值是完全相同的觀察不與其他的觀察說明如行 1、 11,和 12 依賴。
單元格 E1:E12 包含按降序順序返回的 RANK 的秩。有兩個條目具有較低的秩,比單元格 A8:A10 中的三個條目。單元格 A8:A10 具有一個公共值 54。因此,這些三個項占用的排名位置 3、 4 和 5,並且有一個平均排位 (3 + 4 + 5) / 3 = 4。有兩個條目中的單元格 A6:A7 比的低級別的五個條目。單元格 A6:A7 具有一個公共值 33。因此,這些兩個項占用排名位置 6 和 7,並有一個平均排位 (6 + 7) / 2 = 6.5。有七個條目具有較低的秩,比單元格 A2:A5 中的四個條目。單元格 A2:A5 具有一個公共值 21。因此,這些四個項占用排名的位置,8、 9、 10、 11 和平均值 (8 + 9 + 10 + 11) 的 / 4 = 9.5。
在 F 列中的項包含修正係數為限制的秩和顯示這些平均秩扎考慮在內。列 E 和 F 列中的值是完全相同的觀察不與其他的觀察說明如行 1、 11,和 12 依賴。
結論
本文介紹並說明了可用於限制秩排名數據時考慮了修正因素。您可以使用與 RANK 函式一起修正因素。修正因素效果同樣不錯秩何時按升序或降序排序。