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_NO FROM SALE )
WHERE ROW_NO>1 

转载于:https://www.cnblogs.com/shuai7boy/p/9888025.html

ROW_NUMBER() OVER()函数用法;(分组,排序),partition by (转)相关推荐

  1. ROW_NUMBER() OVER()函数用法;(分组,排序),partition by

    1.row_number() over()排序功能: (1) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 欧拉降幂 ---- 2020 杭电多校[E - Fibonacci Sum]+欧拉降幂+和式的调整+二次剩余+毒瘤卡常
  2. [Android]实现类似微信的延迟加载的Fragment——LazyFragment
  3. DL之BigGAN:利用BigGAN算法实现超强炸天效果——画风的确skr、skr、skr,太特么的skr了
  4. 3 src 获取_CVE-2019-15846:Exim远程获取root权限漏洞分析
  5. Linux系统编程(二)孤儿进程和僵尸进程
  6. 新装 Asterisk-1.6 没有 Meetme
  7. Docker 概述 与 CentOS 上安装、卸载、启动
  8. Substance Designer Dirt Ground
  9. 华北电力大学控制与计算机工程学院怎么样,华北电力大学控制与计算机工程学院实践部10月25日动保劳动感想...
  10. python调用通达信数据_通达信数据格式及5分钟信息提取
  11. ICME 论文Latex模版要求
  12. 一文带你走进CI/CD
  13. 【题解反思】海亮信息集训A-B班-分治初步专项
  14. 3 个节省时间的 Python 技巧!
  15. 使用frp配置内网机器访问
  16. Idea Maven ReImport 报错NoClassDefFoundError: org/codehaus/plexus/util/StringUtils
  17. 如何让开源项目成为你的良师益友
  18. 《孙子兵法》十三篇注译(3--作战篇)
  19. 如何使用 Lightly 邀请朋友在线协作?
  20. java狐狸游戏_Java继承

热门文章

  1. 软件设计原则(四) 里氏替换原则
  2. YII2中behavior行为的理解与使用
  3. linux中生成考核用的NTFS文件系统结构样例(一)
  4. 生活娱乐 长的最奇怪的东西——骡耳犰狳
  5. Yii2学习笔记(一):Yii的安装和使用(base版)
  6. 开启tomcat的gzip
  7. jar 文件不能运行
  8. setTimeout.js
  9. 4412开发板团购活动
  10. VMWare Network Adapter设置错误也会导致 Determining IP information for eth0 failed