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