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个分区

posted @ 2022-01-11 18:04  zhou&zhou  阅读(1800)  评论(1)    收藏  举报