原表為:
一、分區函數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
執行結果: