排序(分組后排序&整排)


一.整排

要求:根據score進行排名,分數相同,名次相同,且連續

表如下圖:

 

 

 sql語句:

方法一:
select
a.score, (select count(distinct b.score) from test01 b where b.score >=a.score) as rank1 from test01 a order by score desc;

結果如下圖:

方法二:
select score,dense_rank() over(order by score desc) rank2 from test01

結果如下圖:

 

 

 注意:重新命名時不要使用rank,會報錯

二.分組后排序

要求:每一門課的最高兩名

表:test01

方法一:

select *
from
(
select
subject,score,
@ROW:=case when @su=subject then @ROW+1 else 1 end rn,
@su:=subject
from
(select subject,score from test01 order by subject,score desc) t1,
(select @ROW:=0, @su:='') t2
)t3
where rn<=2

注意:@ROW:=是用來賦值的

結果如下圖:

方法二:

select *
from
(select subject,score,row_number() over(partition by subject order by score desc) rn from test01) t
where t.rn <=2

結果如下圖:

 

 


免責聲明!

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



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