我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ROW_NUMBER() OVER()

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ROW_NUMBER() OVER()

ROW_NUMBER()OVER() 是Oracle SQL分析函数,主要是用来对要查询的数据分组排序使用。 
使用方法 
ROW_NUMBER()OVER(PARTITION BY col1 ORDER BY col2) 
对列col1分组,col2排序操作。 
例子:

SQL> SELECT 
  2   ROW_NUMBER()OVER(PARTITION BY deptno ORDER BY sal, empno) AS rn,
  3   empno, ename, sal, deptno
  4  FROM emp;

    RN  EMPNO ENAME     SAL DEPTNO---------- ---------- ---------- ---------- ----------
     1   7934 MILLER           1300     10
     2   7782 CLARK        2450     10
     3   7839 KING         5000     10
     1   7369 SMITH     800     20
     2   7876 ADAMS        1100     20
     3   7566 JONES        2975     20
     4   7788 SCOTT        3000     20
     5   7902 FORD         3000     20
     1   7900 JAMES     950     30
     2   7521 WARD         1250     30
     3   7654 MARTIN           1250     30

    RN  EMPNO ENAME     SAL DEPTNO---------- ---------- ---------- ---------- ----------
     4   7844 TURNER           1500     30
     5   7499 ALLEN        1600     30
     6   7698 BLAKE        2850     3014 rows selected.

同时也可以单独使用其来对结果进行排序 
可以和order by 对比一下:

SQL> SELECT empno, ename, sal,
  2    ROW_NUMBER()OVER(ORDER BY sal, empno) AS rn
  3  FROM emp;

     EMPNO ENAME	     SAL	 RN
---------- ---------- ---------- ----------
      7369 SMITH	     800	  1
      7900 JAMES	     950	  2
      7876 ADAMS	    1100	  3
      7521 WARD 	    1250	  4
      7654 MARTIN	    1250	  5
      7934 MILLER	    1300	  6
      7844 TURNER	    1500	  7
      7499 ALLEN	    1600	  8
      7782 CLARK	    2450	  9
      7698 BLAKE	    2850	 10
      7566 JONES	    2975	 11

     EMPNO ENAME	     SAL	 RN
---------- ---------- ---------- ----------
      7788 SCOTT	    3000	 12
      7902 FORD 	    3000	 13
      7839 KING 	    5000	 14

14 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 3145491563

---------------------------------------------------------------------------
| Id  | Operation	   | Name | Rows  | Bytes | Cost (%CPU)| Time	  |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |	  |    14 |   462 |	4  (25)| 00:00:01 |
|   1 |  WINDOW SORT	   |	  |    14 |   462 |	4  (25)| 00:00:01 |
|   2 |   TABLE ACCESS FULL| EMP  |    14 |   462 |	3   (0)| 00:00:01 |
---------------------------------------------------------------------------

Note
-----
   - dynamic sampling used for this statement (level=2)


Statistics
----------------------------------------------------------
	  5  recursive calls
	  0  db block gets
	 16  consistent gets
	  1  physical reads
	  0  redo size
       1049  bytes sent via SQL*Net to client
	523  bytes received via SQL*Net from client
	  2  SQL*Net roundtrips to/from client
	  1  sorts (memory)
	  0  sorts (disk)
	 14  rows processed

SQL> SELECT empno, ename, sal
  2  FROM emp
  3  ORDER BY sal, empno;

     EMPNO ENAME	     SAL
---------- ---------- ----------
      7369 SMITH	     800
      7900 JAMES	     950
      7876 ADAMS	    1100
      7521 WARD 	    1250
      7654 MARTIN	    1250
      7934 MILLER	    1300
      7844 TURNER	    1500
      7499 ALLEN	    1600
      7782 CLARK	    2450
      7698 BLAKE	    2850
      7566 JONES	    2975

     EMPNO ENAME	     SAL
---------- ---------- ----------
      7788 SCOTT	    3000
      7902 FORD 	    3000
      7839 KING 	    5000

14 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 150391907

---------------------------------------------------------------------------
| Id  | Operation	   | Name | Rows  | Bytes | Cost (%CPU)| Time	  |
---------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |	  |    14 |   462 |	4  (25)| 00:00:01 |
|   1 |  SORT ORDER BY	   |	  |    14 |   462 |	4  (25)| 00:00:01 |
|   2 |   TABLE ACCESS FULL| EMP  |    14 |   462 |	3   (0)| 00:00:01 |
---------------------------------------------------------------------------

Note
-----
   - dynamic sampling used for this statement (level=2)


Statistics
----------------------------------------------------------
	  4  recursive calls
	  0  db block gets
	 16  consistent gets
	  1  physical reads
	  0  redo size
	943  bytes sent via SQL*Net to client
	523  bytes received via SQL*Net from client
	  2  SQL*Net roundtrips to/from client
	  1  sorts (memory)
	  0  sorts (disk)
	 14  rows processed

对比ORDER BY 子句,排序结果一样,使用ROW_NUMBER()OVER()函数可生产RN列,便于在某些列表程序选择行数。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ROW_NUMBER() OVER()

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中rank() over、dense_rank() over和row_number() over怎么用

今天小编给大家分享一下MySQL中rank() over、dense_rank() over和row_number() over怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望
2023-06-29

sql分组排序row_number() over()

sql分组排序函数row_number() over(partition by 分组列 order by 排序列 desc)select tmp.pk_orderfrom(select pk_order,row_number() over(partition

	sql分组排序row_number() over()
2021-11-19

Oracle中ROW_NUMBER()OVER()函数用法实例讲解

目录1. 说明:2. 原理:3.语法:4.示例一:5. 示例二总结oracle中ROW_NUMBER() OVER()函数用法1. 说明:ROW_NUMBER() OVER() 函数的作用:分组排序2. 原理:row_number(
2023-04-25

SQL使用ROW_NUMBER() OVER函数自动生成序列号

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)简单的说ROW_NUMBER()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY CYLH D
SQL使用ROW_NUMBER() OVER函数自动生成序列号
2019-02-27

SQL如何使用ROW_NUMBER() OVER函数生成序列号

这篇文章给大家介绍SQL如何使用ROW_NUMBER() OVER函数生成序列号,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER
2023-06-22

Oracle rownum和row_number()

rownum 和 row_number()的区别一、 Oracle中的rownum用于从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依次类推。这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。rownum对于等于某

	Oracle rownum和row_number()
2019-07-26

H3C IPSEC OVER GRE

##### Route A ###################################interface Tunnel 0 mode gre ip address 10.254.1.2255.255.255.252 source
2023-01-31

SQL中的函数——Row_Number()

row_number() 核心语句如下:over(partition by colum1 order by colum2 (colum2 可以等于colum1 )desc)ow_number函数返回一个唯一的,当遇到相同的数据时,排名按照记录集中记录的顺序依次
SQL中的函数——Row_Number()
2015-09-12

Oracle中的函数——Row_Number()

row_number() 核心语句如下:over(partition by colum1 order by colum2 (colum2 可以等于colum1 )desc)ow_number函数返回一个唯一的,当遇到相同的数据时,排名按照记录集中记录的顺序依次
Oracle中的函数——Row_Number()
2014-10-26

sql中的row_number意思

sql 中 row_number 函数为表中每一行分配唯一序列号。可用于排序数据或确定行在表中的位置。语法:row_number() over ([partition by 分区字段] order by 排序字段)。可用场景包括给数据排序、
sql中的row_number意思
2024-05-10

Row_number()函数用法小结

Row_number()函数是SQL SERVER系统函数中的一种,它为结果集的分区中的每一行分配一个连续的整数。简单的说就是oZXWdQEG生成一个独表,序号以每个分区的第一行开头,下面js是其基本语法:PARTITION BY子句将结果
2023-05-12

编程热搜

目录