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...