开窗条件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)相关推荐

  1. 视频教程-oracle数据库教程-Oracle

    oracle数据库教程 主要研究方向为J2EE..net .数据库 .前端.Android,曾经服务过大型上市国企IT部门,软件企业联合创始人,对软件研发管理.市场营销有自己独特思想体系! 张晨光 ¥ ...

  2. Oracle SQL高级编程——分析函数(窗口函数)全面讲解

    Oracle SQL高级编程--分析函数(窗口函数)全面讲解 注:本文来源于:<Oracle SQL高级编程--分析函数(窗口函数)全面讲解> 概述 分析函数是以一定的方法在一个与当前行相 ...

  3. 【分析函数】Oracle分析函数之LAG和LEAD

    [分析函数]Oracle分析函数之LAG和LEAD Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值.这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的 ...

  4. oracle菜鸟学习之 分析函数-排序

    oracle菜鸟学习之 分析函数-排序 排序函数 1.row_number:返回连续的排序,无论值是否相等 2.rank:具有相等值得行排序相同,序数值随后跳跃 3.dense_rank:具有相等值得 ...

  5. oracle电子商务套件视频,Oracle电子商务套件培训 Oracle EBS R12 制造模块培训视频教程 Oracle管理套件教程...

    Oracle电子商务套件培训 Oracle EBS R12 制造模块培训视频教程 Oracle管理套件教程│  ├<01> │  │  ├00_ERP基本原理-概念补充.pdf │  │  ...

  6. oracle的集函数,Oracle统计分析函数集之一(转载)

    分析函数over 及开窗函数 一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返 ...

  7. oracle 进入gdsctl,oracle的分析函数over 及开窗函数[转]

    一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返回一行. 下面通过几个例子来说 ...

  8. oracle 的lag,oracle分析函数lag

    这是使用分析函数的Oracle方法论. with data as ( SELECT 1 trip_id, to_date('20080801 13:30:00','YYYYMMDD HH24:mi:s ...

  9. 视频教程-Oracle数据库从入门到实用教程详解-Oracle

    Oracle数据库从入门到实用教程详解 全栈工程师,2010年从事软件开发以及软件教育培训工作,至今将近十余年,在项目的开发,设计,到管理上积累了丰富的实战经验,教学风格上通俗易懂,问题解答环节一对一 ...

最新文章

  1. AliCloudDB for redis应用场景之存储最新N条聊天记录
  2. 边缘分布律_概率论笔记-Ch3随机向量及其分布
  3. 微软公布19财年财报:净利润增长22%,云计算首超个人计算业务
  4. 学python需要什么文化基础-人工智能对人类有哪些影响 选择Python入门怎样
  5. opencv-contrib-python安装
  6. 【uni-app】深度作用选择器解决修改checkbox样式无效问题
  7. 一个很SB的方法,来开始调一个刚启动就SB的程序
  8. RHEL4- DNS服务(四)DNS的开机自动启动控制
  9. HDU多校6 - 6831 Fragrant numbers(dfs爆搜+打表)
  10. The connection to adb is down, and a severe error has occured.问题解决方法小结
  11. 看到这块Google的“墓地”,心中作何感想?| 今日最佳
  12. Google Adwords/SEO关键字策略之Google Webmaster Tool数据方法
  13. Python数据分析:pandas玩转Excel(三)
  14. 2018百度之星资格赛:1002:子串查询
  15. 高性能mysql_「高性能MySQL」十年阿里架构师推荐,这份高性能MySQL文档送给你
  16. 阿里云河源数据中心正式开服 疫情期间曾2小时扩容1万台云服务器
  17. [转载] 多元线性回归 及其Python实现
  18. 用Geek Uninstaller在win10下卸载office2010
  19. 学会这几项windows操作,轻松玩转自己的个人电脑
  20. 10天学安卓-第一天

热门文章

  1. Python 实现 PNG 序列图和GIF转换,适用于透明背景
  2. 地图测试距离的软件,‎App Store 上的“距离 - 在地图上绘制并测量距离”
  3. C语言 输入一个十六进制数,输出相应的十进制数
  4. Unity 实战项目 ☀️| 只用一个脚本做一个 刮刮乐 案例,一不小心刮出来一个女朋友!【学习娱乐一下】
  5. python从入门到精通图片_Python从入门到精通之环境搭建教程图解
  6. Android开发:去除标题栏的方法
  7. 树莓派 远程看鱼眼摄像头
  8. 使用Photoshop给照片添加白底和水印
  9. 一位上海土著90后,教你用Python和数据赚到人生第一桶金
  10. 女神节·走近又美又飒的程序媛