Oracle-- (RANK) 次序函數

來源:互聯網
上載者:User

標籤:

內容來自: Oracle® Database SQL Language Reference 11g Release 2 (11.2) E41084-03。

empolyees表來自hr方案。

RANK函數可以計算值在特定排序中的位置(使用彙總文法)及按指定列的值計算排名(使用統計文法)。

彙總文法的火車圖

下面語句計算了工資$2215和傭金為0.5%的員工在查詢結果中排名。

SELECT RANK(2015, .05) WITHIN GROUP(ORDER BY salary, commission_pct) "Rank"FROM employees_t;

查詢結果:

      Rank----------         1

ORDER BY:指定了排序欄位,查詢集合只有通過該子句排序,我們才可以擷取值在排序好的集合中的位置。

RANK:該函數的參數數量必須與ORDER BY欄位的數量相同。

DESC、ASC:如果不指定降序(DESC),集合將按照升序(ASC)排列,所以排名既可以按升序也可以按降序排列。

NULLS FIRST、NULLS LAST:指定NULL值在排列中放在開頭還是放在結尾,所以這會影響值排名。

 

統計文法的火車圖

該文法適合查詢排名前幾位或排名後幾位的記錄

下面語句可以查詢部門60的所有員工的排名,排名按照工資由低到高:

SELECT department_id, last_name, salary,RANK() OVER (PARTITION BY department_id ORDER BY salary ) RANKFROM employees_t WHERE department_id = 60ORDER BY RANK, last_name;

查詢結果:

DEPARTMENT_ID LAST_NAME                     SALARY       RANK------------- ------------------------- ---------- ----------           60 Lorentz                      4200.00          1           60 Austin                       4800.00          2           60 Pataballa                    4800.00          2           60 Ernst                        6000.00          4           60 Hunold                       9000.00          5

RANK:不需要指定參數。

OVER:指定排名對象。
PARTITION BY:可以分區排名,指定分區欄位。

ORDER BY:與彙總文法中的ORDER BY用法一樣。

在上面的例子中,分別對每個部分中員工進行排名,這裡僅顯示了部門60。注意,排名號可能不是連續的,如果有兩個排名第二的記錄,他們的排名號都是2,緊接著則是排名號為4的記錄。

Oracle-- (RANK) 次序函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.