row_number() over (partition by order by)的用法


原表為:

一、分區函數Partition By的與row_number()的用法

1、不分班按學生成績排名

select *,row_number() over(order by Score desc) as Sequence from Student

執行結果:

2、分班后按學生成績排名

select *,row_number() over(partition by Grade order by Score desc) as Sequence from Student

執行結果:

3、獲取每個班的前1(幾)名

select * from
(
select *,row_number() over(partition by Grade order by Score desc) as Sequence from Student
)T where T.Sequence<=1

執行結果:

 

二、分區函數Partition By與排序rank()的用法

1、分班后按學生成績排名 該語句是對分數相同的記錄進行了同一排名,例如:兩個80分的並列第2名,第4名就沒有了

select *,rank() over(partition by Grade order by Score desc) as Sequence from Student

執行結果:

2、獲取每個班的前2(幾)名 該語句是對分數相同的記錄進行了同一排名,例如:兩個80分的並列第2名,第4名就沒有了

select * from
(
select *,rank() over(partition by Grade order by Score desc) as Sequence from Student
)T where T.Sequence<=2

執行結果:


免責聲明!

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



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