PARTITION BY


partition  by關鍵字是分析性函數的一部分,它和聚合函數(如group by)不同的地方在於它能返回一個分組中的多條記錄,而聚合函數一般只有一條反映統計值的記錄,

partition  by用於給結果集分組,如果沒有指定那么它把整個結果集作為一個分組。

partition by 與group by不同之處在於前者返回的是分組里的每一條數據,並且可以對分組數據進行排序操作。后者只能返回聚合之后的組的數據統計值的記錄。

 

Demo 

數據庫表結構 學生成績表 UserGrade

Id        int              Checked     主鍵Id
Name   varchar(50) Checked     學生名
Course varchar(50) Checked     課程名
Score   int             Checked      分數

01、把每個人學生的成績按照升序排名 (思路:根據學生姓名分組 根據每個人成績排序)

sql語句 

select *,ROW_NUMBER() over( partition by Name order by Score )排名
from UserGrade

查詢結果

Id Name Course Score 排名
1004 李四 數學 60 1
1005 李四 語文 80 2
1001 李四 英語 100 3
1007 王五 數學 30 1
1006 王五 語文 50 2
1003 王五 英語 50 3
1008 張三 英語 60 1
1000 張三 語文 80 2
1002 張三 數學 90 3

 

02、把每個學科的成績分別進行排名 (思路:根據學科分組 根據成績排序)

sql語句 

select *,ROW_NUMBER() over( partition by Course order by Score )排名
from UserGrade

查詢結果

Id Name Course Score 排名
1002 張三 數學 90 1
1004 李四 數學 60 2
1007 王五 數學 30 3
1001 李四 英語 100 1
1008 張三 英語 60 2
1003 王五 英語 50 3
1000 張三 語文 80 1
1005 李四 語文 80 2
1006 王五 語文 50 3


免責聲明!

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



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