row_number() over (partition by order by desc)用法

article/2025/10/3 23:23:25

转自https://www.cnblogs.com/linJie1930906722/p/6036053.html

分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)

partition by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,而聚合函数一般只有一条反映统计值的记录,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,分区函数一般与排名函数一起使用。

准备测试数据:create table Student --学生成绩表
(
id int, --主键
Grade int, --班级
Score int --分数
)
go

insert into Student values(1,1,88)
insert into Student values(2,1,66)
insert into Student values(3,1,75)
insert into Student values(4,2,30)
insert into Student values(5,2,70)
insert into Student values(6,2,80)
insert into Student values(7,2,60)
insert into Student values(8,3,90)
insert into Student values(9,3,70)
insert into Student values(10,3,80)
insert into Student values(11,3,80)

 

一、分区函数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

执行结果:

 


http://chatgpt.dhexx.cn/article/mwvsMCwZ.shtml

相关文章

row_number 语法

ROW_NUMBER()函数将针对SELECT语句返回的每一行&#xff0c;从1开始编号&#xff0c;赋予其连续的编号。在查询时应用了一个排序标准后&#xff0c;只有通过编号才能够保证其顺序是一致的&#xff0c;当使用ROW_NUMBER函数时&#xff0c;也需要专门一列用于预先排序以便于进行编…

row_number()函数

语法格式&#xff1a;row_number() over(partition by 分组列 order by 排序列 desc) SELECTROW_NUMBER() OVER(PARTITION BY sh.BUSMAIINFID ORDER BY nvl(sh.TIMESTAMP, sh.CREATEDATE) DESC)AS RN,sh.ORGID,sh.BUSMAIINFID,sh.TIMESTAMP,sh.CREATEDATE FROMREG_NETREGINFOA…

MyBatis中的RowBounds

如何分页查询 Mybatis如何分页查询&#xff1f;Mysql中可以使用limit语句&#xff0c;但limit并不是标准SQL中的&#xff0c;如果是其它的数据库&#xff0c;则需要使用其它语句。MyBatis提供了RowBounds类&#xff0c;用于实现分页查询。RowBounds中有两个数字&#xff0c;off…

row_number() over(partition by)整理

row_number() over(partition by)&#xff0c;作为oracle常用的分析函数&#xff0c;身为数据开发时必须要掌握的。不过一段时间不用&#xff0c;难免会有些忘记&#xff0c;今天整理一下一些场景下的用法。 现有表&#xff08;test_rownumber&#xff09;有如下数据&#xff…

Mybatis分页之RowBounds

Mybatis可以使用RowBounds进行分页 dao层 sql的xml文件&#xff0c;因为是java层面的分页&#xff0c;所以sql不需要分页 单元测试 因为参数是第几个开始&#xff0c;这样很不友好&#xff0c;我们一般情况分页是第几页开始&#xff0c;页大小是多少&#xff0c;所以这就需要我…

MySQL–ROW_NUMBER

MySQL–ROW_NUMBER 一、窗口函数 ​ 要讲row_number&#xff0c;首先得讲一下窗口函数。窗口函数&#xff0c;也叫OLAP函数&#xff08;Online Anallytical Processing&#xff0c;联机分析处理&#xff09;&#xff0c;可以对数据库数据进行实时分析处理。 ​ 窗口函数的基…

row_number() OVER(PARTITION BY)函数介绍

OVER(PARTITION BY)函数介绍 开窗函数 Oracle从8.1.6开始提供分析函数&#xff0c;分析函数用于计算基于组的某种聚合值&#xff0c;它和聚合函数的不同之处是&#xff1a;对于每个组返回多行&#xff0c;而聚合函数对于每个组只返回一行。 开窗函数指定了分析函…

巧用ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING

背景 数据如上&#xff0c;按id和ssny分组&#xff0c;求最大的开票时间&#xff0c;若为空&#xff0c;取非空的上一期组内最大开票时间 解 SELECT id, ssny, kpsj, max(kpsj) OVER(PARTITION BY id ORDER BY ssny desc ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) …

mybatis RowBounds 分页

在 mybatis 中&#xff0c;使用 RowBounds 进行分页&#xff0c;非常方便&#xff0c;不需要在 sql 语句中写 limit&#xff0c;即可完成分页功能。但是由于它是在 sql 查询出所有结果的基础上截取数据的&#xff0c;所以在数据量大的sql中并不适用&#xff0c;它更适合在返回数…

RowBounds分页

不再使用SQL实现分页 1.接口 //分页List<User> getUserByRowBounds(); 2.mapper.xml <!-- 分页--><select id"getUserByRowBounds" resultType"UserMap">select * from mybatis.user</select> 3.测试 Testpublic void getUserByRo…

row_number() OVER(PARTITION BY)

日萌社 人工智能AI&#xff1a;Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战&#xff08;不定时更新&#xff09; row_number()排序函数 统计每个部门薪资最高的员工信息&#xff08;同一个部门的员工按照薪资进行降序排序&#xff09;第一种写法&#xff1a;ro…

在VS中安装nuget离线包nupkg文件

1、打开或者新建任意一个项目 2、项目-管理NuGet程序包 3、设置 4、设置好以后如下图&#xff0c;点击确定 5、安装

Uipath打包流程为.nupkg文件

先断开oc 在publish流程&#xff0c;其中main是入口 点击publish 然后打开Uipath robot&#xff0c;可以看到流程已经同步上去了

如何将nupkg离线安装包安装到VS2017、9

不知道为什么&#xff0c;用vs自带的nuget程序管理器安装nuget包非常慢&#xff0c;而且很容易出错&#xff0c;最重要的是编译的时候能急死人&#xff0c;于是换网、自己架nuget服务器...一顿折腾。 不再废话&#xff0c;直接上干货&#xff1a; 1、在官网https://www.nuget…

VS如何安装.nupkg文件

nupkg是visual studio 的NuGet Package的一个包文件 安装nupkg包前&#xff0c;在visual studio的NuGet中会显示该包需要的.net framework runetime版本需要 还有版权归属等信息 具体看一下截图 大家可以去下载一个&#xff1a;Google Protocol buffers 3.5.1的nupkg来试试 下…

vs2010 添加nupkg文件

起因呢是这样的&#xff1a;以前一直用破解版的Teechartd&#xff0c;其实这个问题也不大&#xff0c;也挺好的&#xff0c;只是因为它是破解的嘛&#xff1b; 近期对知识产权这块也非常重视&#xff0c;所以在这个开发中就考虑到我们未来远大的梦想&#xff0c;我们是仪表行业…

c#使用nuget.exe CLI发布 nupkg 包

2019独角兽企业重金招聘Python工程师标准>>> 准备 工具&#xff1a;nuget.exe CLI&#xff08;本人使用版本&#xff1a; NuGet Version: 4.6.2.5055&#xff09;将下载的的nuget.exe路径添加到系统变量PATH中vs创建的类库项目 操作 让项目自动生成版本号&#xff0…

如何将nupkg文件安装到VS2017

本文为原创文章、源代码为原创代码&#xff0c;如转载/复制&#xff0c;请在网页/代码处明显位置标明原文名称、作者及网址&#xff0c;谢谢&#xff01; 开发工具&#xff1a;VS2017 系统&#xff1a;Win10 X64 一、首先在https://www.nuget.org/下载离线nupkg文件&#xff0c…

制作NUGET包制作nupkg包

下载制作NUGET包工具 NUGETPACKAGEEXPLORER 直接下载NuGet Package Explorer软件&#xff0c;网盘CSDN等上面有好多 然后运行里面的 根据你自己的lib版本选择相应的选项 选择你的lib文件 选择Edit进行基础信息编辑 填写基础信息&#xff0c;图标填写绝对磁盘地址即可&#xf…

Nuget包管理器将nupkg文件导入ASP.NET MVC5项目

备注&#xff1a;使用的是Visual Stual2013。 1、新建ASP.NET Web应用程序&#xff0c;自定义项目名、解决方案名 2、选择对应的模板&#xff0c;可以勾选添加单元测试 3、选择菜单栏&#xff1a;工具——Nuget包管理器——程序包管理器设置(N)&#xff0c; 出现界面如下&…