ORACLE日常-ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法

news/2024/7/4 14:57:10

ROW_NUMBER() OVER(partition by col1 order by col2) 表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内是连续且唯一的)

具体说明下:

在testTable表中有如下数据:

通过row_number() over(partition by col1 order by col2)分析:

select id,name,date1, row_number() over(partition by id order by date1 desc) as rownumber from testTable;

结果如下:

可以看到,先是根据id进行分组,然后是根据date1进行倒序排列,排列的顺序根据值rownumber排序

可以将上面的语句作为一条子语句,嵌入到查询中,例如:

select id, name, date1
  from (select id,
               name,
               date1,
               row_number() over(partition by id order by date1 desc) as rownumber
          from testTable) T
  where t.rownumber = 2;

结果:

补充:order by 中nulls first和nulls last的用法

在row_number() over(partition by col1 order by col2 desc)中可以使用nulls first或者nulls last,在oracle中,order by排序中支持nulls first和nulls last。

如果order by指定了表达式nulls first,则表示null值的记录将排在最前面,不管是按照asc还是desc排序;

如果order by指定了表达式nulls last,则表示null值的记录将排在最后面,不管是按照asc还是desc排序;

语法格式:

order by col1 asc/desc nulls first/nulls last;

例如,表示按照col2逆序排列,并且将为null的记录始终放在排序的最前面:

row_number() over(partition by col1 order by col2 desc nulls first)

 

注:该博客参考于:http://blog.csdn.net/iw1210/article/details/11937085,感谢原作者的分享!

转载于:https://www.cnblogs.com/hjwq/p/7931148.html


http://www.niftyadmin.cn/n/1894729.html

相关文章

06510 oracle,ORA-06510 Error

当在执行一个抛出自定义异常的pl/sql 块的时候,如果没有 exception 块对起进行处理则会报 ORA-06510错误。例如 执行以下的语句块:declaree exception;g_name varchar2(10);beginif g_name is null thenraise e;end if;end;报错信息: ORA-065…

spring boot + embed tomcat + standalone jar的内存泄露问题

前一阵遇到了一个很坑的内存泄露问题,记录于此: 有个项目采用spring cloud重构后,部署到线上(其中有一个接口,大概每天调用量在1千万次左右),发现zabbix监控里,linux的可用内存一直持…

更换戴尔成就3350屏幕排线

趁着夜黑风高,哦不对不对,晴空万里,哦也不对也不对 反正今天天气一般,万里无云的天空上飘着朵朵白云 所以,我又来晒(Pian)帖(Jin)了(Bi) 同事小…

第二天(上午) 基本数类型

java的基本数据类型四类八种四类 byte short int long 浮点型 double float 字符型 char 布尔型 boolean八种类型位数取值范围byte 字节型1byte8bit-128~127大概120short 短2byte16bit-32768-32767大概3万2千int 整数型4byte32bit-2147483648~2147483647正好超过2…

什么是 Event Loop?

摘自:http://www.ruanyifeng.com/blog/2014/10/event-loop.html 一、为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能…

php时间问候语,时间问候语大全

时光的流失无法倒退,只要珍惜眼前的时间,对生活充满期待!下面是学习啦小编为你整理的时间问候语大全,供大家阅览!时间问候语大全温馨版1. 生活处处有压力,白天有,干劲十足,晚上有,睡眠不足;忙时…

JavaScript之节流与防抖

个人博客原文地址 背景 我们在开发的过程中会经常使用如scroll、resize、touchmove等事件,如果正常绑定事件处理函数的话,有可能在很短的时间内多次连续触发事件,十分影响性能。因此针对这类事件要进行节流或者防抖处理 节流 节流的意思是&am…

软件开发工作总结

2019独角兽企业重金招聘Python工程师标准>>> 1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要&#xff1…