共找到2條詞條名為rank的結果 展開
- 函數
- 英文單詞
rank
函數
rank是T_sql函數,rank()函數返回結果集分區內指定欄位的值的排名,指定欄位的值的排名是相關行之前的排名加一。
RANK() OVER([])
partition_by_clause將from子句生成的結果集劃分為應用到RANK函數的分區。
Order_by_clause確定將RANK值應用到分區中的行時所使用的順序。
以下用一個成績表作示例,
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
rank函數是排名函數。rank函數最常用的是求某一個數值在某一區域內的排名。
rank函數語法形式:rank(number,ref,[order])
函數名後面的參數中number為需要求排名的那個數值或者單元格名稱(單元格內必須為數字),ref為排名的參照數值區域,order的為0和1,默認不用輸入,得到的就是從大到小的排名,若是想求倒數第幾,order的值請使用1。
下面給出幾個rank函數的範例:
示例1:正排名
此例中,我們在B2單元格求20這個數值在A1:A5區域內的排名情況,我們並沒有輸入order參數,不輸入order參數的情況下,默認order值為0,也就是從高到低排序。此例中20在A1:A5區域內的正排序是1,所以顯示的結果是1。
示例2:倒排名
此例中,我們在上面示例的情況下,將order值輸入為1,發現結果大變,因為order值為1,意思是求倒數的排名,20在A1:A5 區域內的倒數排名就是4。
示例3:求一列數的排名
在實際應用中,我們往往需要求某一列的數值的排名情況,例如,我們求A1到A5單元格內的數據的各自排名情況。我們可以使用單元格引用的方法來排名:=rank(a1,a1:a5) ,此公式就是求a1單元格在a1:a5單元格的排名情況,當我們使用自動填充工具拖拽數據時,發現結果是不對的,仔細研究一下,發現a2單元格的公式居然變成了 =rank(a2,a2:a6) 這超出了我們的預期,我們比較的數據的區域是a1:a5,不能變化,所以,我們需要使用 $ 符號鎖定公式中 a1:a2 這段公式,所以,a1單元格的公式就變成了 =rank(a1,a$1:a$5)。
如果你不記得此函數如何使用,你可以點擊“插入”“函數”,類別選擇“全部”,然後任意選擇下方的一個函數名,然後按鍵盤上的“R”鍵,你很快就可以找到rank函數了,三個參數的用法如上所述。
函數簡介
函數功能:在Matlab、FreeMat中,該函數的功能是,求一個矩陣的秩(rank)(矩陣中線性無關的行數/列數)。
語法格式:
y = rank(A)
求矩陣A的秩。
y = rank(A,tol)
其中tol參數是限定求秩時的誤差。
相關函數:det
程序示例
在FreeMat中的示例
--> A = [1 2 3; 4 5 6; 7 8 9];
--> det(A) % A的行列式為0
ans = 6.6613e-016
--> rank(A)
ans = 2
--> rank([1 0 0; 0 1 0; 0 0 1])
ans = 3