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,根据部门分组排序。
![](/assets/blank.gif)
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
![](/assets/blank.gif)
(2)对查询结果进行排序:(无分组)
![](/assets/blank.gif)
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
![](/assets/blank.gif)
row_number() over()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序).
2、rank() over()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内).
![](/assets/blank.gif)
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
![](/assets/blank.gif)
3、dense_rank() over()是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的 .
![](/assets/blank.gif)
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
![](/assets/blank.gif)
使用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_NO FROM SALE ) WHERE ROW_NO>1
转载于:https://www.cnblogs.com/shuai7boy/p/9888025.html
ROW_NUMBER() OVER()函数用法;(分组,排序),partition by (转)相关推荐
- ROW_NUMBER() OVER()函数用法;(分组,排序),partition by
1.row_number() over()排序功能: (1) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排 ...
- 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() ...
最新文章
- 欧拉降幂 ---- 2020 杭电多校[E - Fibonacci Sum]+欧拉降幂+和式的调整+二次剩余+毒瘤卡常
- [Android]实现类似微信的延迟加载的Fragment——LazyFragment
- DL之BigGAN:利用BigGAN算法实现超强炸天效果——画风的确skr、skr、skr,太特么的skr了
- 3 src 获取_CVE-2019-15846:Exim远程获取root权限漏洞分析
- Linux系统编程(二)孤儿进程和僵尸进程
- 新装 Asterisk-1.6 没有 Meetme
- Docker 概述 与 CentOS 上安装、卸载、启动
- Substance Designer Dirt Ground
- 华北电力大学控制与计算机工程学院怎么样,华北电力大学控制与计算机工程学院实践部10月25日动保劳动感想...
- python调用通达信数据_通达信数据格式及5分钟信息提取
- ICME 论文Latex模版要求
- 一文带你走进CI/CD
- 【题解反思】海亮信息集训A-B班-分治初步专项
- 3 个节省时间的 Python 技巧!
- 使用frp配置内网机器访问
- Idea Maven ReImport 报错NoClassDefFoundError: org/codehaus/plexus/util/StringUtils
- 如何让开源项目成为你的良师益友
- 《孙子兵法》十三篇注译(3--作战篇)
- 如何使用 Lightly 邀请朋友在线协作?
- java狐狸游戏_Java继承