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 基于列中的值

去重 ROW_NUMBER() OVER(PARTITION BY 分组字段 ORDER BY 排序字段) RN

(Ms Access) Row_Number() Over Partition