oracle分析函数用途,深入探讨:oracle中row_number() over()分析函数用法
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()分析函数用法相关推荐
- Oracle中ROW_NUMBER() OVER()函数用法
Oracle中ROW_NUMBER() OVER()函数用法 1. 说明:ROW_NUMBER() OVER() 函数的作用:分组排序 2. 原理: row_number() over() 函数,ov ...
- SQL中 ROW_NUMBER 函数的用法
SQL中 ROW_NUMBER 函数的用法 ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号.在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是 ...
- oracle中row_number用法,深入探讨:oracle中row_number() over()分析函数用法
row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内 ...
- oracle语句within,oracle中within group的用法
within group语句和group by没有半毛钱关系,只是一些单值聚合函数的辅助关键字,下面以rank函数为例. rank在oracle中分为聚合函数和分析函数两种,本篇不介绍分析函数,参考分 ...
- oracle r修改表名,oracle中修改表名
<<>> answer1: ALTER TABLE old_table_name RENAME TO new_table_name;(大写为系统命令) answer2: SQL ...
- Oracle中的within,oracle中within group的用法
within group语句和group by没有半毛钱关系,只是一些单值聚合函数的辅助关键字,下面以rank函数为例. rank在oracle中分为聚合函数和分析函数两种,本篇不介绍分析函数,参考分 ...
- partition by mysql_详解Oracle查询中OVER (PARTITION BY ..)用法
本文主要介绍了Oracle查询中OVER (PARTITION BY ..)用法,内容和代码大家参考一下,希望能帮助到大家.为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立 ...
- Oracle 12c、18c、19c中的MGMTDB(下)
Oracle 12c.18c.19c中的MGMTDB(下) 上一篇参考: http://blog.itpub.net/26736162/viewspace-2132763/ 在12.1.0.1 中, ...
- Oracle 12c、18c、19c中的MGMTDB、GIMR
Oracle 12c.18c.19c中的MGMTDB.GIMR 文档内容 用途 问题和答案 什么是管理资料库? 管理资料库是用来干什么的? 管理资料库的数据文件放在哪里? ...
最新文章
- 【算法】论平衡二叉树(AVL)的正确种植方法
- 5.4Python数据处理篇之Sympy系列(四)---微积分
- 关于string类型的字符串是否以\0结尾
- 怎么改服务器php文件,自定义更改服务器asp/php/.net等文件后缀名
- redis+celery+django设置外网可访问
- tensorflow2.0 GPU 版本安装测试教程及新特性初探
- MM(Majorize-Minimization, Minorize-Maximization)优化方法
- java接口废弃注释_Java注释Override、Deprecated、SuppressWarnings详解
- flexbox 弹性盒模型
- okhttp配置缓存策略_一网打尽OkHttp中的缓存问题
- Excel技能培训之十二 基本函数if,sumif,sumifs,clean,trim,upper,lower,proper,Text,REPLACE,substitute
- SAP MM 发货到成本中心场景下的批次确定
- spss入门——简单的数据预处理到时间序列分析系列(声明!!!!!!!)
- ANSYS FLUENT三维非结构网格数值计算及后处理——教室全新风送风与排风
- linux考出光盘数据,电脑如何复制数据到光盘|电脑在光盘中存储数据的方法
- 损失次数模型-负二项分布
- python如何爬有道翻译_如何利用Python网络爬虫来获取有道翻译翻译接口--手机版的哦!...
- 解决IE6下select z-index 无效
- 为什么说测试岗位是巨坑?10年测试人告诉你千万别上当
- wap建站程序_因建站系统存在SQL注入漏洞,国内两家网络公司被CNVD公开点名
热门文章
- jboss eap mysql_JBoss EAP 7概述
- 如何看pg数据库版本号_pg版本是什么-和pg版本相关的问题-阿里云开发者社区
- 2022圣诞节用canvas实现流星雨
- 讯飞智能录音笔SR702让工作体验更佳
- 无法打开这个应用,查看Microsoft store, 了解有关Nahimic的详细信息
- v-loam源码阅读(一)视觉特征
- python软件长什么样子图片高清_手把手:扫描图片又大又不清晰?这个Python小程序帮你搞定!...
- m基于QPSK调制解调的无线图像传输matlab仿真,包括扩频解扩均衡等模块
- [CB]2018年中国智能手机市场出货量
- 零基础转行新媒体运营,有哪些必须要掌握的技能