使用RANK函式統計排行榜

2021-04-23 18:16:51 字數 1828 閱讀 5333

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

奧運排行榜

每年奧運會各大 都會公布乙個排行榜,但是細心的讀者發現,不同國家的排行榜略有不同。比如中國金牌總數列第一的時候,中國 就公布 金牌榜 而美國的獎牌總數第一,於是美國 就公布 獎牌榜 如果人口少的國家公布乙個 國民人均獎牌榜 說不定非洲的國家會成為榜魁 現在就請你寫乙個程式,對每個前來諮詢的國家按照對...