oracle 分析函数视频教程,Oracle 分析函数使用教程(3)
开窗条件query_partition_clause决定被除数的值, 如果用户忽略了这个条件, 则计算查询结果中所有记录的汇总值.
用户不能使用其他分析函数或者ratio_to_report作为分析函数ratio_to_report的参数expr, 也就是说这个函数不能循环使用. 但我们可以使用其他普通函数作为这个分析函数的查询结果.
RATIO_TO_REPORT解析函数使得这种类型的查询更容易编码。它的格式如下:
RATIO_TO_REPORT (expr) OVER (query_partition_clause)
/* FORMATTED ON 2009/11/10 20:24 (FORMATTER PLUS V4.8.8) */
SELECT ENAME, SAL, DEPTNO, RATIO_TO_REPORT (SAL) OVER () AS RR
FROM SCOTT.EMP
WHERE DEPTNO = 10;
ENAME
SAL
DEPTNO
RR
CLARK
2,450
10
0.28
KING
5,000
10
0.571428571428571
MILLER
1,300
10
0.148571428571429
/* FORMATTED ON 2009/11/10 20:36 (FORMATTER PLUS V4.8.8) */
SELECT ENAME, SAL, DEPTNO,
RATIO_TO_REPORT (SAL) OVER (PARTITION BY DEPTNO) AREA_PCT
FROM SCOTT.EMP;
ENAME
SAL
DEPTNO
AREA_PCT
CLARK
2,450.0000000000
10
0.2800000000
KING
5,000.0000000000
10
0.5714285714
MILLER
1,300.0000000000
10
0.1485714286
JONES
2,975.0000000000
20
0.2735632184
FORD
3,000.0000000000
20
0.2758620690
ADAMS
1,100.0000000000
20
0.1011494253
SMITH
800.0000000000
20
0.0735632184
SCOTT
3,000.0000000000
20
0.2758620690
WARD
1,250.0000000000
30
0.1329787234
TURNER
1,500.0000000000
30
0.1595744681
ALLEN
1,600.0000000000
30
0.1702127660
JAMES
950.0000000000
30
0.1010638298
BLAKE
2,850.0000000000
30
0.3031914894
MARTIN
1,250.0000000000
30
0.1329787234
八. First,Last,First_value,Last_value取基数的分析函数
First功能描述:从DENSE_RANK返回的集合中取出排在最前面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。
Last功能描述:从DENSE_RANK返回的集合中取出排在最后面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。
FIRST_VALUE、LAST_VALUE:返回结果集中排在第一位和最后一位的值。
语法是:FIRST_VALUE (expr) OVER ( analytic_clause)
/* FORMATTED ON 2009/11/10 20:51 (FORMATTER PLUS V4.8.8) */
SELECT ENAME, DEPTNO, SAL,
MIN (SAL)KEEP (DENSE_RANK FIRST ORDER BY DEPTNO) OVER (PARTITION BY DEPTNO) "Worst",
MAX (SAL)KEEP (DENSE_RANK LAST ORDER BY DEPTNO) OVER (PARTITION BY DEPTNO) "Best"
FROM SCOTT.EMP;
ENAME
DEPTNO
SAL
Worst
Best
CLARK
10
2,450
1,300
5,000
KING
10
5,000
1,300
5,000
MILLER
10
1,300
1,300
5,000
JONES
20
2,975
800
3,000
FORD
20
3,000
800
3,000
ADAMS
20
1,100
800
3,000
SMITH
20
800
800
3,000
SCOTT
20
3,000
800
3,000
WARD
30
1,250
950
2,850
TURNER
30
1,500
950
2,850
ALLEN
30
1,600
950
2,850
JAMES
30
950
950
2,850
BLAKE
30
2,850
950
2,850
MARTIN
30
1,250
950
2,850
/* Formatted on 2009/11/10 20:55 (Formatter Plus v4.8.8) */
SELECT ENAME, DEPTNO, SAL,
FIRST_VALUE (ENAME) OVER (PARTITION BY DEPTNO ORDER BY SAL ASC) AS LOWEST_SAL
FROM SCOTT.EMP;
ENAME
DEPTNO
SAL
LOWEST_SAL
MILLER
10
1,300
MILLER
CLARK
10
2,450
MILLER
KING
10
5,000
MILLER
SMITH
20
800
SMITH
ADAMS
20
1,100
SMITH
JONES
20
2,975
SMITH
FORD
20
3,000
SMITH
SCOTT
20
3,000
SMITH
JAMES
30
950
JAMES
MARTIN
30
1,250
JAMES
WARD
30
1,250
JAMES
TURNER
30
1,500
JAMES
ALLEN
30
1,600
JAMES
BLAKE
30
2,850
JAMES
九. Greatest, Least 函数
Greatest函数:取一个一维数组中的最大值。
Least函数:取一个一维数组中的最小值。
/* Formatted on 2009/11/10 20:59 (Formatter Plus v4.8.8) */
SELECT GREATEST (1, 2, 3, 4, 5, 6) MAX
FROM DUAL;
/* Formatted on 2009/11/10 20:59 (Formatter Plus v4.8.8) */
SELECT LEAST (1, 2, 3, 4, 5, 6) MIN
FROM DUAL;
十. Trunc, round, decode,substr函数
全角的数字/字母/标点符号转半角to_single_byte
10.1 Trunc 函数
Trunc实际上是truncate函数,字面意思是截断,截尾。函数的功能是将数字进行截断。tranc()并不四舍五入。
/* Formatted on 2009/11/10 21:19 (Formatter Plus v4.8.8) */
SELECT TRUNC (1234.5678, 2) rs
FROM DUAL;
RS
----------
1234.56
/* Formatted on 2009/11/10 21:19 (Formatter Plus v4.8.8) */
SELECT TRUNC (1234.5678, 0) rs
FROM DUAL;
RS
----------
1234
/* Formatted on 2009/11/10 21:19 (Formatter Plus v4.8.8) */
SELECT TRUNC (1234.5678, -2) rs
FROM DUAL;
RS
------------
1200
10.2 Round 函数
Round 函数: 返回按指定位数进行四舍五入的数值。
语法: Round(expression[, numdecimalplaces])
expression 必选。 数值表达式 被四舍五入。
numdecimalplaces 可选。数字表明小数点右边有多少位进行四舍五入。如果省略,则 Round 函数返回整数。
/* Formatted on 2009/11/10 21:23 (Formatter Plus v4.8.8) */
SELECT ROUND (12.45, 1) rs
FROM DUAL;
RS
---------------
12.5
10.3 Decode 函数
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
decode(字段或字段的运算,值1,值2,值3)
SELECT DECODE (value, , ) FROM table
这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3
当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多
/* Formatted on 2009/11/10 21:28 (Formatter Plus v4.8.8) */
SELECT DECODE (NAME, 'Dave', 'I Love BL', 'NoLove') rs
FROM (SELECT 'Dave' NAME
FROM DUAL);
RS
---------
I Love BL
/* Formatted on 2009/11/10 21:29 (Formatter Plus v4.8.8) */
SELECT DECODE (NAME, 'BL', 'I love Dave', 'NoLove') rs
FROM (SELECT 'Dave' NAME
FROM DUAL);
RS
------
NoLove
10.4 SubStr 函数
SUBSTR(string,start,count) : 取子字符串,从start开始,取count个。
/* Formatted on 2009/11/10 21:37 (Formatter Plus v4.8.8) */
SELECT SUBSTR ('I Love You', 3, 4) rs
FROM DUAL;
RS
----
Love
oracle 分析函数视频教程,Oracle 分析函数使用教程(3)相关推荐
- 视频教程-oracle数据库教程-Oracle
oracle数据库教程 主要研究方向为J2EE..net .数据库 .前端.Android,曾经服务过大型上市国企IT部门,软件企业联合创始人,对软件研发管理.市场营销有自己独特思想体系! 张晨光 ¥ ...
- Oracle SQL高级编程——分析函数(窗口函数)全面讲解
Oracle SQL高级编程--分析函数(窗口函数)全面讲解 注:本文来源于:<Oracle SQL高级编程--分析函数(窗口函数)全面讲解> 概述 分析函数是以一定的方法在一个与当前行相 ...
- 【分析函数】Oracle分析函数之LAG和LEAD
[分析函数]Oracle分析函数之LAG和LEAD Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值.这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的 ...
- oracle菜鸟学习之 分析函数-排序
oracle菜鸟学习之 分析函数-排序 排序函数 1.row_number:返回连续的排序,无论值是否相等 2.rank:具有相等值得行排序相同,序数值随后跳跃 3.dense_rank:具有相等值得 ...
- oracle电子商务套件视频,Oracle电子商务套件培训 Oracle EBS R12 制造模块培训视频教程 Oracle管理套件教程...
Oracle电子商务套件培训 Oracle EBS R12 制造模块培训视频教程 Oracle管理套件教程│ ├<01> │ │ ├00_ERP基本原理-概念补充.pdf │ │ ...
- oracle的集函数,Oracle统计分析函数集之一(转载)
分析函数over 及开窗函数 一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返 ...
- oracle 进入gdsctl,oracle的分析函数over 及开窗函数[转]
一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返回一行. 下面通过几个例子来说 ...
- oracle 的lag,oracle分析函数lag
这是使用分析函数的Oracle方法论. with data as ( SELECT 1 trip_id, to_date('20080801 13:30:00','YYYYMMDD HH24:mi:s ...
- 视频教程-Oracle数据库从入门到实用教程详解-Oracle
Oracle数据库从入门到实用教程详解 全栈工程师,2010年从事软件开发以及软件教育培训工作,至今将近十余年,在项目的开发,设计,到管理上积累了丰富的实战经验,教学风格上通俗易懂,问题解答环节一对一 ...
最新文章
- AliCloudDB for redis应用场景之存储最新N条聊天记录
- 边缘分布律_概率论笔记-Ch3随机向量及其分布
- 微软公布19财年财报:净利润增长22%,云计算首超个人计算业务
- 学python需要什么文化基础-人工智能对人类有哪些影响 选择Python入门怎样
- opencv-contrib-python安装
- 【uni-app】深度作用选择器解决修改checkbox样式无效问题
- 一个很SB的方法,来开始调一个刚启动就SB的程序
- RHEL4- DNS服务(四)DNS的开机自动启动控制
- HDU多校6 - 6831 Fragrant numbers(dfs爆搜+打表)
- The connection to adb is down, and a severe error has occured.问题解决方法小结
- 看到这块Google的“墓地”,心中作何感想?| 今日最佳
- Google Adwords/SEO关键字策略之Google Webmaster Tool数据方法
- Python数据分析:pandas玩转Excel(三)
- 2018百度之星资格赛:1002:子串查询
- 高性能mysql_「高性能MySQL」十年阿里架构师推荐,这份高性能MySQL文档送给你
- 阿里云河源数据中心正式开服 疫情期间曾2小时扩容1万台云服务器
- [转载] 多元线性回归 及其Python实现
- 用Geek Uninstaller在win10下卸载office2010
- 学会这几项windows操作,轻松玩转自己的个人电脑
- 10天学安卓-第一天
热门文章
- Python 实现 PNG 序列图和GIF转换,适用于透明背景
- 地图测试距离的软件,App Store 上的“距离 - 在地图上绘制并测量距离”
- C语言 输入一个十六进制数,输出相应的十进制数
- Unity 实战项目 ☀️| 只用一个脚本做一个 刮刮乐 案例,一不小心刮出来一个女朋友!【学习娱乐一下】
- python从入门到精通图片_Python从入门到精通之环境搭建教程图解
- Android开发:去除标题栏的方法
- 树莓派 远程看鱼眼摄像头
- 使用Photoshop给照片添加白底和水印
- 一位上海土著90后,教你用Python和数据赚到人生第一桶金
- 女神节·走近又美又飒的程序媛