ROW_NUMBER() OVER() 函数用法详解 (分组排序,多例子)

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

语法格式:row_number() over(partition by 分组列 order by 排序列 desc)

row_number() over()分组排序功能:

在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、  order by 的执行。

例一:

表数据:

create table TEST_ROW_NUMBER_OVER(id varchar(10) not null,name varchar(10) null,age varchar(10) null,salary int null
);
select * from TEST_ROW_NUMBER_OVER t;insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(1,'a',10,8000);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(1,'a2',11,6500);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(2,'b',12,13000);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(2,'b2',13,4500);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(3,'c',14,3000);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(3,'c2',15,20000);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(4,'d',16,30000);
insert into TEST_ROW_NUMBER_OVER(id,name,age,salary) values(5,'d2',17,1800);


一次排序:对查询结果进行排序(无分组)

select id,name,age,salary,row_number()over(order by salary desc) rn
from TEST_ROW_NUMBER_OVER t
结果:

进一步排序:根据id分组排序

select id,name,age,salary,row_number()over(partition by id order by salary desc) rank
from TEST_ROW_NUMBER_OVER t

结果:

 再一次排序:找出每一组中序号为一的数据

select * from(select id,name,age,salary,row_number()over(partition by id order by salary desc) rank
from TEST_ROW_NUMBER_OVER t)
where rank <2

结果:

排序找出年龄在13岁到16岁数据,按salary排序

select id,name,age,salary,row_number()over(order by salary desc)  rank
from TEST_ROW_NUMBER_OVER t where age between '13' and '16'

结果:结果中 rank 的序号,其实就表明了 over(order by salary desc) 是在where age between and 后执行的

例二:

1.使用row_number()函数进行编号,如

select email,customerID, ROW_NUMBER() over(order by psd) as rows from QT_Customer

原理:先按psd进行排序,排序完后,给每条数据进行编号。

2.在订单中按价格的升序进行排序,并给每条记录进行排序代码如下:

select DID,customerID,totalPrice,ROW_NUMBER() over(order by totalPrice) as rows from OP_Order

3.统计出每一个各户的所有订单并按每一个客户下的订单的金额 升序排序,同时给每一个客户的订单进行编号。这样就知道每个客户下几单了:

select ROW_NUMBER() over(partition by customerID  order by totalPrice)as rows,customerID,totalPrice, DID from OP_Order

4.统计每一个客户最近下的订单是第几次下的订单:

with tabs as  
(  
select ROW_NUMBER() over(partition by customerID  order by totalPrice)as rows,customerID,totalPrice, DID from OP_Order  )  
select MAX(rows) as '下单次数',customerID from tabs 
group by customerID 

5.统计每一个客户所有的订单中购买的金额最小,而且并统计改订单中,客户是第几次购买的:

思路:利用临时表来执行这一操作。

1.先按客户进行分组,然后按客户的下单的时间进行排序,并进行编号。

2.然后利用子查询查找出每一个客户购买时的最小价格。

3.根据查找出每一个客户的最小价格来查找相应的记录。 

  with tabs as  (  select ROW_NUMBER() over(partition by customerID  order by insDT) 
as rows,customerID,totalPrice, DID from OP_Order  )  select * from tabs  where totalPrice in   (  select MIN(totalPrice)from tabs group by customerID  ) 

6.筛选出客户第一次下的订单。

思路。利用rows=1来查询客户第一次下的订单记录。   

with tabs as  (  select ROW_NUMBER() over(partition by customerID  order by insDT) as rows,* from OP_Order  )  select * from tabs where rows = 1 select * from OP_Order 

7.注意:在使用over等开窗函数时,over里头的分组及排序的执行晚于“where,group by,order by”的执行。   

 select   ROW_NUMBER() over(partition by customerID  order by insDT) as rows,  customerID,totalPrice, DID  from OP_Order where insDT>'2011-07-22' 

 
————————————————
版权声明:本文为CSDN博主「一彡十」的原创文章

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决:您需要来自xxx的权限才能对此文件夹进行更改(电脑系统取得管理员权限)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.莫名的一个项目工程代码就打不开了。提示信息为&#xff1a; 2. 删除也不行&#xff0c;更新也不行&#xff0c;火大&#xff0c;我惹…

程序员父亲的遗产——编程十诫

我的父亲在和我彻谈编程两个星期之后就去世了。 那个时候我22岁&#xff0c;一个刚刚完成美学学士毕业设计的大四学生。而我的父亲62岁&#xff0c;比大多数我同龄人的父亲都要老。早在60年代&#xff0c;他就已经在田纳西理工大学开始编程了&#xff0c;那个时候他在穿孔卡片…

解决:Can not deserialize instance of com.xxx.xx.XXModel out of START_ARRAY toke

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. json数据解析报错&#xff1a; Can not deserialize instance of com.xxx.xxx.model.XXXModel out of START_ARRAY token 2. 需要一…

HEVC标准概览

HEVC标准概览HEVC&#xff08;高效视频编码标准&#xff09;是ITU-T VCEG&#xff08;国际电联电信标准化部视频编码组&#xff09;与ISO/IEC MPEG&#xff08;国际标准化组织国际电工委员会视频标准化组&#xff09;的合作组织JCT-VC最新项目。ITU-T和ISO/IEC计划在2013年1月共…

解决:Unable to identify index name. XXXModel is not a Document. Make sure the document class is annota

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 往 elasticsearch 写入数据调用 index 方法&#xff0c;执行报错&#xff1a; Unable to identify index name. XXXModel is not a …

为什么年事已高的我还在编程?

每一个行业的从业人员都会有变老的那一刻&#xff0c;难道变老了之后还要继续从事之前的工作吗&#xff1f;估计没人愿意&#xff0c;除非是体力上吃得消的。接下来所讲述的就是作为程序员的码农们该如何迎接慢慢变老之后的工作转变&#xff01;人们都会期望随着岁数的增加&…

解决:redis.clients.jedis.exceptions.JedisDataExceptionERR This instance has cluster support disabled

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. springCloud 项目启动工程&#xff0c;redis 集群连接报错&#xff1a; Caused by: redis.clients.jedis.exceptions.JedisDataExcep…

小两口攒钱不吵嘴 用理财加固你的爱情

【导读】终于和你的他生活在一起了&#xff0c;幸福吗&#xff1f;争吵吗&#xff1f;困惑吗&#xff1f;据统计&#xff0c;夫妻间的矛盾大多跟钱有关&#xff0c;怎么花钱、怎么攒钱往往是两个人不能统一的原因。鉴于此&#xff0c;她理财总结了几条财蜜关于夫妻怎么攒钱理财…

解决: Intellij IDEA 运行报错 Command line is too long

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. idea启动工程报错&#xff1a; 2. 网上找到2个方法。方法一我试了有效果。方法二我同事试了有效果。 方法一&#xff1a; 修改项目…

年薪50万码农转行卖凉皮,互联网思维又一次颠覆?

摘要&#xff1a;今年五月份&#xff0c;一位年薪50万元的码农哥放弃了码农的工作&#xff0c;转身跳到了苦脏累的餐饮行业&#xff0c;每天骑着筋斗云电动车在中关村送外卖的事迹在互联网上引起了轰动。近日&#xff0c;码农哥接受了CSDN的采访&#xff0c;让我们一窥其转行背…

hue 查询 hbase 操作相关参考

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 界面操作说明 进入hue中的hbase 进入表的查询界面 界面说明 查询语句 ,表示结束查询&#xff0c;可以不加 主键查询 输入主键 rowke…

不要做一个浮躁的程序员

1.不要看到别人的回复第一句话就说&#xff1a;给个代码吧&#xff01;你应该想想为什么。当你自己想出来再参考别人的提示&#xff0c;你就知道自己和别人思路的差异。   2.初学者请不要看太多太多的书那会误人子弟的&#xff0c;先找本系统的学&#xff0c;很多人用了很久…

解决:elasticsearch 更新报错:The number of object passed must be even but was [1]

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 错误的代码写法&#xff1a; Autowiredprivate ElasticsearchOperations esOperations; public void updateAxxxData(List<AxxxMo…

.NET技术+25台服务器怎样支撑世界第54大网站

摘要&#xff1a;同时使用Linux和Windows平台产品&#xff0c;大量使用静态的方法和类&#xff0c;Stack Overflow是个重度性能控。同时&#xff0c;取代横向扩展&#xff0c;他们坚持着纵向扩展思路&#xff0c;因为“硬件永远比程序员便宜”。 【编者按】StackOverflow是一个…

apache sgoop 导入数据到 oracle、导出数据到 oracle 实现

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 业务场景&#xff1a;是在oracle 数据库和 hive 数据库中 &#xff0c;有多个相同结构的表&#xff0c;要求数据从2个库定时双向同步。…

最佳的开源云项目有哪些?

Linux.com和The New Stack联合起来做了一个调查&#xff1a;你认为的最受欢迎的开源云项目是哪些&#xff1f;调查涵盖了hypervisors、IaaS、PaaS、管理和服务开通和其它类别的开源项目。所有项目较为成熟的、有规模的开源云项目。下一代的企业正在使用开放云技术打造完全不同的…

我们正处在“后开源”时代?

越来越多的软件不是用来出售的&#xff0c;而是用来增强互联网上所提供的各种服务的功能。开源的实际好处已经超过了你所看到的一面&#xff0c;但是现在还是有人纠结是用什么样的开源协议&#xff0c;只是不明白为什么还要和开源协议作斗争呢&#xff1f;自由软件和开源软件支…

解决:-source 1.6 中不支持 diamond 运算符 [ERROR] (请使用 -source 7 或更高版本以启用 diamond 运算符)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 工程打包 mvn clean install 执行报错&#xff1a; 2. 解决方法&#xff0c;在pom中加上如下配置&#xff1a; <plugin><gr…

是什么摧毁了程序员的工作效率

本文是html5tricks原创翻译&#xff0c;转载请看清文末的转载要求&#xff0c;谢谢合作&#xff01; 下图是摘自网上有关程序员工作效率的论述。 正如Homer Simpson所说&#xff0c;如果这是真的&#xff0c;那就有意思了。 我之所以不能一针见血地发现如何才能高效工作的秘密…

解决:single failed: For artifact {null:null:null:jar}: The groupId cannot be empty. 把工程依赖的jar包打到入jar中

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 执行 mvn clean install 报错&#xff1a; Execution make-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:2.4…