SQL排序函數


1.ROW_NUMBER()

將select查詢到的數據進行排序,每一條數據加一個序號,一般用於分頁查詢

排列出的序號不同

(1)對學生成績排序

select row_number() over(order by score desc) number, * from student;

此處的number就是學生的名次

(2)獲取第二個學生的成績信息

select * from (

select row_number() over(order by studentscore desc) number,* from student

)t  where t.number=2

where t.number>=1 and t.number<=10,獲取的就是前十名學生的信息

2.RANK()

對某一字段進行排序,存在相同值時,排序相同,下面的排序是連續的,如1,1,2

(1)對學生成績排序

select rank() over(order by score desc) number, * from student;

按班級分組:

select rank() over(partition by classid order by score desc) number, * from student;

 

3.DENSE_RANK()

對某一字段進行排序,存在相同值時,排序相同,下面的排序是不連續的,如1,1,3

(1)對學生成績排序

select dense_rank() over(order by score desc) number, * from student;

4.NTILE()

將有序分區中的行分發到指定數目的組中,各個組有編號,編號從1開始,

例:

select ntile(1) over(order by score desc) number, * from student;

select ntile(2) over(order by score desc) number, * from student;

select ntile(3) over(order by score desc) number, * from student;

 

 查詢3次,有3個分區


免責聲明!

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



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