rank函式統計排行

2021-05-22 12:30:18 字數 1625 閱讀 7714

rank

是乙個從

oracle 8.1.6

開始引入的統計函式。

rank

的功能是按照某種分組方式計算出返回結果的排行。

rank

函式有兩個,乙個是

rank

,另外乙個是

dense_rank

。rank

排序在碰到並列值的時候,下乙個排行序號會跳過並列的值,而

dense_rank

排序的結果有並列排名,下乙個排行順序僅僅加一。

比如:

sql> select year, region, profit,dept ,

2rank() over ( order by profit desc) as rk

3from test;

year regionprofit derk

---- ------- ---------- -- ----------

2004 east103 a21

2003 east102 a12

2003 central101 a13

2003 central100 a24

2004 west89 a25

2003 west88 a16

2003 west88 a26

2004 west77 a18

2004 west77 a18

使用dense_rank排名的結果為:

sql> select year, region, profit,dept ,

2dense_rank() over ( order by profit desc) as rk

3from test;

year regionprofit derk

---- ------- ---------- -- ----------

2004 east103 a21

2003 east102 a12

2003 central101 a13

2003 central100 a24

2004 west89 a25

2003 west88 a16

2003 west88 a26

2004 west77 a17

上面的例子是按照profit進行排名。rank函式支援分組排名,比如我們可以按照年份分組,然後計算排名:

sql> select year, region, profit,dept ,

2 rank() over (partition by year order by profit desc,region) as rk

3from test;

year regionprofit derk

---- ------- ---------- -- ----------

2003 east102 a11

2003 central101 a12

2003 central100 a23

2003 west99 a24

2003 west88 a15

2004 east103 a21

2004 west89 a22

2004 west77 a13

這個查詢首先對資料按照年份分組,然後在分組中計算排名。

使用RANK函式統計排行榜

rank 是乙個從 oracle 8.1.6 開始引入的統計函式。rank 的功能是按照某種分組方式計算出返回結果的排行。rank 函式有兩個,乙個是 rank 另外乙個是 dense rank rank 排序在碰到並列值的時候,下乙個排行序號會跳過並列的值,而 dense rank 排序的結果有並...

oracle排名函式rank

記錄乙個常見的例子供學習參考 連續排名dense rank 不連續排名rank 分組partition 不分組 原始表 t score 姓名 學科 成績 張三 english 80 李四 english 70 王五 english 90 趙六 english 80 張三 chinese 90 李四 ...

Hive開窗函式和Rank函式

over 跟在聚合函式後面,指定分析函式工作的資料視窗大小,決定了資料的聚合範圍,預設範圍是整個資料視窗,即所有行。可使用partition by將資料進行分組聚合 使用order by除了排序 預設asc公升序 還會改變聚合範圍 從開始行到當前行的聚合 使用distribute by sort b...