ROW_NUMBER() OVER()函数用法;(分组,排序),partition by
1、row_number() over()排序功能:
(1) row_number() over()分组排序功能:
在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where group by order by 的执行。
partition by 用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,而聚合函数一般只有一个反映统计值的记录。
例如:employee,根据部门分组排序。
SELECT empno,WORKDEPT,SALARY, Row_Number() OVER (partition by workdept ORDER BY salary desc) rank FROM employee
--------------------------------------
000010 A00 152750 1
000110 A00 66500 2
000120 A00 49250 3
200010 A00 46500 4
200120 A00 39250 5
000020 B01 94250 1
000030 C01 98250 1
000130 C01 73800 2
(2)对查询结果进行排序:(无分组)
SELECT empno,WORKDEPT,SALARY, Row_Number() OVER (ORDER BY salary desc) rank FROM employee
--------------------------------------
000010 A00 152750 1
000030 C01 98250 2
000070 D21 96170 3
000020 B01 94250 4
000090 E11 89750 5
000100 E21 86150 6
000050 E01 80175 7
000130 C01 73800 8
000060 D11 72250 9
row_number() over()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序).
2、rank() over()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内).
select workdept,salary,rank() over(partition by workdept order by salary) as dense_rank_order from emp order by workdept;
------------------
A00 39250 1
A00 46500 2
A00 49250 3
A00 66500 4
A00 152750 5
B01 94250 1
C01 68420 1
C01 68420 1
C01 73800 3
3、dense_rank() over()是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的
select workdept,salary,dense_rank() over(partition by workdept order by salary) as dense_rank_order from emp order by workdept;
------------------
A00 39250 1
A00 46500 2
A00 49250 3
A00 66500 4
A00 152750 5
B01 94250 1
C01 68420 1
C01 68420 1
C01 73800 2
C01 98250 3
使用ROW_NUMBER删除重复数据
---假设表TAB中有a,b,c三列,可以使用下列语句删除a,b,c都相同的重复行。
DELETE FROM (select year,QUARTER,RESULTS,row_number() over(partition by YEAR, QUARTER, RESULTS order by YEAR, QUARTER, RESULTS) AS ROW_NOFROM SALE)WHERE ROW_NO > 1
ROW_NUMBER() OVER()函数用法;(分组,排序),partition by相关推荐
- ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...
- Oracle中ROW_NUMBER() OVER()函数用法
Oracle中ROW_NUMBER() OVER()函数用法 1. 说明:ROW_NUMBER() OVER() 函数的作用:分组排序 2. 原理: row_number() over() 函数,ov ...
- ROW_NUMBER() OVER()函数用法详解
今天同事问了一个关于插入表的问题,对象:被插入表sys_equi_disorg A , 查询表sys_equi_dict B 因为A表的ID不是自增的,并且不能更改表结构,主键默认值还是0, ...
- row_number() over (partition by....order by...)用法 分组排序
row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编 ...
- ROW_NUMBER() OVER() 函数用法详解 (分组排序,多例子)
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 语法格式:row_number() over(partition by 分组列 order by 排 ...
- 【Oracle】开窗函数、分组排序 row_number\partition by 详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.row_number是什么? 二.partition by是什么? 三.加上条件筛选你想要的记录 前言 提示:这里 ...
- SQL 之 ROW_NUMBER() OVER函数用法
语法: row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后 ...
- Sql进阶用法(分组排序|级联删除)
开窗函数,分组排序 rank() over(partition by [field] order by [field] [asc/desc]) --同排名不连续 1 1 3 row_number() ...
- Oracle高级函数:rank over partition by
高级函数,分组排序 over: 在什么条件之上. partition by e.deptno: 按部门编号划分(分区). order by e.sal desc: 按工资从高到低排序(使用rank() ...
最新文章
- 如何挖掘医疗数据?看这份KDD2021《异构医疗数据挖掘》教程,附Slides
- free pascal 修改字符集,会导致 dos 不能显示 汉字。 处理方法如下
- 金蝶K/3 同步用核算项目配置
- Python Django related_name属性使用示例
- boost::hana::remove_if用法的测试程序
- GDB调试程序-Ubuntu
- 智能家居数据库设计_设计更智能的数据表
- JavaScript 语言基础知识点总结(思维导图)
- C语言答案杨崇艳,贯彻落实科学发展观,走新型工业化道路的要求是()。A.科技含量高B.经济效益好...
- Visual Basic之父回忆往事
- 结构化CSS设计思维
- 全网首发:WINDOWS某些文件夹,提供管理员权限后也无法删除,正确解决办法
- hua图软件 mac_10款Mac上设计师必备的设计绘图工具推荐和下载 | 玩转苹果
- Scratch编程入门
- 上传图片计算机没有桌面,电脑桌面消失了!
- centos,php,apache,nginx,vim命令相关知识和命令记录
- 第二章 进程管理(3)——进程同步
- python pandas操作excel表
- 计算机属性显示缩略图 桌面样式变了,Win7任务栏缩略图预览变成列表预览怎么解决?...
- GameFramework篇:AssetsBundle Tools配置
热门文章
- java聊天室 博客_java网络聊天室
- application配置token_Kerrigan:配置中心管理UI的实现思路和技术细节
- java poi3.15 ppt,Apache POI PPT - 演示( Presentation)
- mapreduce 丢数据_大数据之MapReduce详解
- python做数据分析的包_用Python做数据分析,Numpy,Pandas,matp
- cuda合并访问的要求_CUDA优化的冷知识 5 | 似是而非的计时方法
- ppt设置外观样式_如何设置更符合需要的幻灯片背景?
- 的app抓包 ssl_抓包旧版App
- 信号与系统2021春季课程小论文批改
- 中文TTS文字转语音合成模块合成成品带喇叭 替代SYN6288和XFS5152