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 east
103 a
212003 east
102 a
122003 central
101 a
132003 central
100 a
242004 west
89 a
25
2003 west
88 a
162003 west
88 a
262004 west
77 a
182004 west
77 a
18使用dense_rank排名的結果為:
sql> select year, region, profit,dept ,
2dense_rank() over ( order by profit desc) as rk
3from test;
year regionprofit derk
---- ------- ---------- -- ----------
2004 east
103 a
212003 east
102 a
122003 central
101 a
132003 central
100 a
242004 west
89 a
252003 west
88 a
162003 west
88 a
262004 west
77 a
17上面的例子是按照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 east
102 a
112003 central
101 a
122003 central
100 a
232003 west
99 a
242003 west
88 a
152004 east
103 a
212004 west
89 a
222004 west
77 a
13這個查詢首先對資料按照年份分組,然後在分組中計算排名。
rank函式統計排行
rank 是乙個從 oracle 8.1.6 開始引入的統計函式。rank 的功能是按照某種分組方式計算出返回結果的排行。rank 函式有兩個,乙個是 rank 另外乙個是 dense rank rank 排序在碰到並列值的時候,下乙個排行序號會跳過並列的值,而 dense rank 排序的結果有並...
mysql製作排行榜 mysql實現排行榜
博主新人一枚,大家可以提出自己的寶貴意見。下來我們進入正題。大家首先要了解介面的場景,再就是排行榜的規則,我們這裡說的中國式排行榜。排行榜總結了一下分為3種 中國式排行 非中國式排行1 非中國式排行2 1 1 1 2 2 2 2 2 3 3 4 4 3 5 5 4 5 6 5 7 7 select ...
奧運排行榜
每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個程式,對每個前來諮詢的國家按照對...