【SQL】【Oracle】分區函數Partition By的用法


一、什么是分區函數:

group by是分組函數

partition by是分區函數(像sum()等是聚合函數

二、用法解析:

1、over函數的寫法:

 

先對cno 中相同的進行分區,在cno 中相同的情況下對degree 進行排序

2、分區函數Partition By與rank()的用法“對比”分區函數Partition By與row_number()的用法

例:查詢每名課程的第一名的成績

(1)使用rank()

得到結果:
在這里插入圖片描述

(2)使用row_number()

 

 

 

得到結果:
在這里插入圖片描述

(3)rank()與row_number()的區別

由以上的例子得出,在求第一名成績的時候,不能用row_number(),因為如果同班有兩個並列第一,row_number()只返回一個結果。

2、分區函數Partition By與rank()的用法“對比”分區函數Partition By與dense_rank()的用法

例:查詢課程號為‘3-245’的成績與排名

(1) 使用rank()

 

 

得到結果:
在這里插入圖片描述

(2) 使用dense_rank()

 

 

得到結果:
在這里插入圖片描述

(3)rank()與dense_rank()的區別

由以上的例子得出,rank()和dense_rank()都可以將並列第一名的都查找出來;但rank()是跳躍排序,有兩個第一名時接下來是第三名;而dense_rank()是非跳躍排序,有兩個第一名時接下來是第二名。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM