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相关推荐

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

    ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...

  2. Oracle中ROW_NUMBER() OVER()函数用法

    Oracle中ROW_NUMBER() OVER()函数用法 1. 说明:ROW_NUMBER() OVER() 函数的作用:分组排序 2. 原理: row_number() over() 函数,ov ...

  3. ROW_NUMBER() OVER()函数用法详解

    今天同事问了一个关于插入表的问题,对象:被插入表sys_equi_disorg   A  , 查询表sys_equi_dict   B 因为A表的ID不是自增的,并且不能更改表结构,主键默认值还是0, ...

  4. row_number() over (partition by....order by...)用法 分组排序

    row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编 ...

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

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 语法格式:row_number() over(partition by 分组列 order by 排 ...

  6. 【Oracle】开窗函数、分组排序 row_number\partition by 详解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.row_number是什么? 二.partition by是什么? 三.加上条件筛选你想要的记录 前言 提示:这里 ...

  7. SQL 之 ROW_NUMBER() OVER函数用法

    语法: row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后 ...

  8. Sql进阶用法(分组排序|级联删除)

    开窗函数,分组排序 rank() over(partition by [field] order by [field] [asc/desc]) --同排名不连续 1 1 3 row_number() ...

  9. Oracle高级函数:rank over partition by

    高级函数,分组排序 over: 在什么条件之上. partition by e.deptno: 按部门编号划分(分区). order by e.sal desc: 按工资从高到低排序(使用rank() ...

最新文章

  1. 如何挖掘医疗数据?看这份KDD2021《异构医疗数据挖掘》教程,附Slides
  2. free pascal 修改字符集,会导致 dos 不能显示 汉字。 处理方法如下
  3. 金蝶K/3 同步用核算项目配置
  4. Python Django related_name属性使用示例
  5. boost::hana::remove_if用法的测试程序
  6. GDB调试程序-Ubuntu
  7. 智能家居数据库设计_设计更智能的数据表
  8. JavaScript 语言基础知识点总结(思维导图)
  9. C语言答案杨崇艳,贯彻落实科学发展观,走新型工业化道路的要求是()。A.科技含量高B.经济效益好...
  10. Visual Basic之父回忆往事
  11. 结构化CSS设计思维
  12. 全网首发:WINDOWS某些文件夹,提供管理员权限后也无法删除,正确解决办法
  13. hua图软件 mac_10款Mac上设计师必备的设计绘图工具推荐和下载 | 玩转苹果
  14. Scratch编程入门
  15. 上传图片计算机没有桌面,电脑桌面消失了!
  16. centos,php,apache,nginx,vim命令相关知识和命令记录
  17. 第二章 进程管理(3)——进程同步
  18. python pandas操作excel表
  19. 计算机属性显示缩略图 桌面样式变了,Win7任务栏缩略图预览变成列表预览怎么解决?...
  20. GameFramework篇:AssetsBundle Tools配置

热门文章

  1. java聊天室 博客_java网络聊天室
  2. application配置token_Kerrigan:配置中心管理UI的实现思路和技术细节
  3. java poi3.15 ppt,Apache POI PPT - 演示( Presentation)
  4. mapreduce 丢数据_大数据之MapReduce详解
  5. python做数据分析的包_用Python做数据分析,Numpy,Pandas,matp
  6. cuda合并访问的要求_CUDA优化的冷知识 5 | 似是而非的计时方法
  7. ppt设置外观样式_如何设置更符合需要的幻灯片背景?
  8. 的app抓包 ssl_抓包旧版App
  9. 信号与系统2021春季课程小论文批改
  10. 中文TTS文字转语音合成模块合成成品带喇叭 替代SYN6288和XFS5152