日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

orcale的rank(排名函数)实例

發布時間:2023/12/31 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 orcale的rank(排名函数)实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

詳解:http://www.jb51.net/article/51627.htm

注意:使用rank()over(order by 排序字段 順序)排序的時候,空值是最大的
(如果排序字段為null,可能造成在排序時將null字段排在最前面,影響排序的正確性。
所以建議將dense_rank()over(order by 列名 排序)改為dense_rank()over(order by 列名 排序 nulls last)
這樣只要排序字段為null,就會放在最后,而不會影響排序結果).
?

問題:

分區與分組有什么區別?

分區使用的是rank() over (partition by 分區字段 order by 排序字段 順序), 分組使用的是 group by 分組字段

·分區只是將原始數據進行名次排列(記錄數不變),

·分組是對原始數據進行聚合統計(記錄數變少,每組返回一條),注意:聚合。

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

?

1.兩種計算方式(連續,不連續),對應函數:dense_rank,rank。

?

2.兩種排名方式(分區和不分區):使用和不使用partition。

語法:

rank() over (order by 排序字段 順序)

rank() over (partition by 分區字段 order by 排序字段 順序),

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

1,實例:查詢各學生科目為Oracle排名(簡單排名)

select sc.s_id,sc.s_name,sub_name,sc.score,

rank() over (order by score desc) 名次

from t_score sc

where sub_name='Oracle'

2.對比:rank()與dense_rank():非連續排名與連續排名(都是簡單排名)

select sc.s_id,sc.s_name,sub_name,sc.score,

dense_rank() over (order by score desc) 名次

from t_score sc

where sub_name='Oracle'

數據庫中有兩個并列的第一名

區別:使用rank進行的排名,結果是不連續的 :1 1 3

使用dense_rank進行的排名,結果是連續的: 1 1 2

3.查詢各學生各科排名(分區排名)

select sc.s_id,sc.s_name,sub_name,sc.score,

rank() over

(partition by sub_name(這個是學科的名字)?order by score desc) 名次

from t_score sc

?

轉載于:https://my.oschina.net/u/2870118/blog/806913

總結

以上是生活随笔為你收集整理的orcale的rank(排名函数)实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。