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個分區
