row_number() over (partition by order by)的用法
Posted kylie-go
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了row_number() over (partition by order by)的用法相关的知识,希望对你有一定的参考价值。
原表为:
一、分区函数Partition By的与row_number()的用法
1、不分班按学生成绩排名
select *,row_number() over(order by Score desc) as Sequence from Student
执行结果:
2、分班后按学生成绩排名
select *,row_number() over(partition by Grade order by Score desc) as Sequence from Student
执行结果:
3、获取每个班的前1(几)名
select * from ( select *,row_number() over(partition by Grade order by Score desc) as Sequence from Student )T where T.Sequence<=1
执行结果:
二、分区函数Partition By与排序rank()的用法
1、分班后按学生成绩排名 该语句是对分数相同的记录进行了同一排名,例如:两个80分的并列第2名,第4名就没有了
select *,rank() over(partition by Grade order by Score desc) as Sequence from Student
执行结果:
2、获取每个班的前2(几)名 该语句是对分数相同的记录进行了同一排名,例如:两个80分的并列第2名,第4名就没有了
select * from ( select *,rank() over(partition by Grade order by Score desc) as Sequence from Student )T where T.Sequence<=2
执行结果:
以上是关于row_number() over (partition by order by)的用法的主要内容,如果未能解决你的问题,请参考以下文章
ROW_NUMBER() OVER()函数用法;(分组,排序),partition by
row_number() over (partition by order by)的用法
使用 Row_number() OVER(partition BY..) 以及声明局部变量
Row_Number() OVER PARTITION BY 基于列中的值