row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。

与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪劣rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码。

row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开始排序)。

rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)

dense_rank()也是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的。

oracle 分析函数 row_number(),返回一个整数值(>=1);

语法格式:

1.row_number() over (order by col_1[,col_2 ...])

作用:按照col_1[,col_2 ...]排序,返回排序后的结果集,

此用法有点像rownum,为每一行返回一个不相同的值:

复制代码 代码如下:

select rownum,ename,job,

row_number() over (order by rownum) row_number

from emp;

ROWNUM ENAME

JOB

ROW_NUMBER

---------- ---------- --------- ----------

1 SMITH

CLERK

1

2 ALLEN

SALESMAN

2

3 WARD

SALESMAN

3

4 JONES

MANAGER

4

5 MARTIN

SALESMAN

5

6 BLAKE

MANAGER

6

7 CLARK

MANAGER

7

8 SCOTT

ANALYST

8

9 KING

PRESIDENT

9

10 TURNER

SALESMAN

10

11 ADAMS

CLERK

11

12 JAMES

CLERK

12

13 FORD

ANALYST

13

14 MILLER

CLERK

14

如果没有partition by子句, 结果集将是按照order by 指定的列进行排序;

复制代码 代码如下:

with row_number_test as(

select 22 a,'twenty two' b from dual union all

select 1,'one' from dual union all

select 13,'thirteen' from dual union all

select 5,'five' from dual union all

select 4,'four' from dual)

select a,b,

row_number() over (order by b)

from row_number_test

order by a;

正如我们所期待的,row_number()返回按照b列排序的结果,

然后再按照a进行排序,才得到下面的结果:

复制代码 代码如下:

A B

ROW_NUMBER()OVER(ORDERBYB)

-- ---------- --------------------------

1 one

3

4 four

2

5 five

1

13 thirteen

4

22 twenty two

5

2.row_number() over (partition by col_n[,col_m ...] order by col_1[,col_2 ...])

作用:先按照col_n[,col_m ...进行分组,

再在每个分组中按照col_1[,col_2 ...]进行排序(升序),

最后返回排好序后的结果集:

复制代码 代码如下:

with row_number_test as(

select 22 a,'twenty two' b,'*' c from dual union all

select 1,'one','+' from dual union all

select 13,'thirteen','*' from dual union all

select 5,'five','+' from dual union all

select 4,'four','+' from dual)

select a,b,

row_number() over (partition by c order by b) row_number

from row_number_test

order by a;

这个例子中,我们先按照c列分组,分为2组('*'组,'+'组),

再按照每个小组的b列进行排序(按字符串首字母的ascii码排),

最后按照a列排序,得到下面的结果集:

复制代码 代码如下:

A B

ROW_NUMBER

-- ---------- ----------

1 one

3

4 four

2

5 five

1

13 thirteen

1

22 twenty two

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

oracle分析函数用途,深入探讨:oracle中row_number() over()分析函数用法相关推荐

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

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

  2. SQL中 ROW_NUMBER 函数的用法

    SQL中 ROW_NUMBER 函数的用法 ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号.在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是 ...

  3. oracle中row_number用法,深入探讨:oracle中row_number() over()分析函数用法

    row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内 ...

  4. oracle语句within,oracle中within group的用法

    within group语句和group by没有半毛钱关系,只是一些单值聚合函数的辅助关键字,下面以rank函数为例. rank在oracle中分为聚合函数和分析函数两种,本篇不介绍分析函数,参考分 ...

  5. oracle r修改表名,oracle中修改表名

    <<>> answer1: ALTER TABLE old_table_name RENAME TO new_table_name;(大写为系统命令) answer2: SQL ...

  6. Oracle中的within,oracle中within group的用法

    within group语句和group by没有半毛钱关系,只是一些单值聚合函数的辅助关键字,下面以rank函数为例. rank在oracle中分为聚合函数和分析函数两种,本篇不介绍分析函数,参考分 ...

  7. partition by mysql_详解Oracle查询中OVER (PARTITION BY ..)用法

    本文主要介绍了Oracle查询中OVER (PARTITION BY ..)用法,内容和代码大家参考一下,希望能帮助到大家.为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立 ...

  8. Oracle 12c、18c、19c中的MGMTDB(下)

    Oracle 12c.18c.19c中的MGMTDB(下) 上一篇参考: http://blog.itpub.net/26736162/viewspace-2132763/ 在12.1.0.1 中, ...

  9. Oracle 12c、18c、19c中的MGMTDB、GIMR

    Oracle 12c.18c.19c中的MGMTDB.GIMR 文档内容   用途   问题和答案       什么是管理资料库?   管理资料库是用来干什么的?   管理资料库的数据文件放在哪里? ...

最新文章

  1. 【算法】论平衡二叉树(AVL)的正确种植方法
  2. 5.4Python数据处理篇之Sympy系列(四)---微积分
  3. 关于string类型的字符串是否以\0结尾
  4. 怎么改服务器php文件,自定义更改服务器asp/php/.net等文件后缀名
  5. redis+celery+django设置外网可访问
  6. tensorflow2.0 GPU 版本安装测试教程及新特性初探
  7. MM(Majorize-Minimization, Minorize-Maximization)优化方法
  8. java接口废弃注释_Java注释Override、Deprecated、SuppressWarnings详解
  9. flexbox 弹性盒模型
  10. okhttp配置缓存策略_一网打尽OkHttp中的缓存问题
  11. Excel技能培训之十二 基本函数if,sumif,sumifs,clean,trim,upper,lower,proper,Text,REPLACE,substitute
  12. SAP MM 发货到成本中心场景下的批次确定
  13. spss入门——简单的数据预处理到时间序列分析系列(声明!!!!!!!)
  14. ANSYS FLUENT三维非结构网格数值计算及后处理——教室全新风送风与排风
  15. linux考出光盘数据,电脑如何复制数据到光盘|电脑在光盘中存储数据的方法
  16. 损失次数模型-负二项分布
  17. python如何爬有道翻译_如何利用Python网络爬虫来获取有道翻译翻译接口--手机版的哦!...
  18. 解决IE6下select z-index 无效
  19. 为什么说测试岗位是巨坑?10年测试人告诉你千万别上当
  20. wap建站程序_因建站系统存在SQL注入漏洞,国内两家网络公司被CNVD公开点名

热门文章

  1. jboss eap mysql_JBoss EAP 7概述
  2. 如何看pg数据库版本号_pg版本是什么-和pg版本相关的问题-阿里云开发者社区
  3. 2022圣诞节用canvas实现流星雨
  4. 讯飞智能录音笔SR702让工作体验更佳
  5. 无法打开这个应用,查看Microsoft store, 了解有关Nahimic的详细信息
  6. v-loam源码阅读(一)视觉特征
  7. python软件长什么样子图片高清_手把手:扫描图片又大又不清晰?这个Python小程序帮你搞定!...
  8. m基于QPSK调制解调的无线图像传输matlab仿真,包括扩频解扩均衡等模块
  9. [CB]2018年中国智能手机市场出货量
  10. 零基础转行新媒体运营,有哪些必须要掌握的技能