[Oracle] 分析功能(1)- 语法
语法概览
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGJhbm90ZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="700" height="250" alt="">
Analytic-Function
Analytic_Clause之PARTITION子句
Analytic_Clause之ORDER BY子句
Analytic_Clause之WINDOWING子句
举例:
以下看一个样例简单过下语法:
例:
sum(sal) over (partition by deptno order by ename) new_alias
sum就是函数名
(sal)是分析函数的參数,每一个函数有0~3个參数,參数能够是表达式,比如:sum(sal+comm)
over() 是开窗函数。这是开启分析函数的起点,对于既可作为聚集函数又可作为分析函数的函数,Oracle无法识别,必须用over来标识此函数为分析函数,此处不可省。
partition by deptno 是可选的分区子句,假设不存在不论什么分区子句,则所有的结果集可看作一个单一的大区
ORDER by则是窗体规则;
ROW |range BETWEEN...AND 是窗体范围(row就像通过自身位置的前后物理座位来找相应的位置。相对固定。而range是通过某种条件来找位置,须要计算方能确定相应位置,如长我3岁和小我两岁的人。)
关于窗体范围的取数方式有多种,看似很复杂,事实上不难,我们開始慢慢剖析:
关键位置就3个:1. 分组第一行Unbounded preceding 2. 当前行Current ROW 3.分组最后一行 Unbounded following
接下来,产生了最简单的三个取数范围:
分组第一行->当前行 rows [between] unbounded preceding [and current row]。
分组第一行->分组最后一行 rows between unbounded preceding and unbounded following。
当前行->分组最后一行 rows between current row and unbounded following
为什么课程分析函数会让人觉的很复杂呢。我们来看看,这个窗体范围有两种取数方式,一个是依据物理位置。就是rowkeyword。一个是依据逻辑位置取数,就是range,这时刚才的取数范围从3个变成6个了,例如以下:
ROWS的 分组第一行->当前行。分组第一行->分组最后一行。 当前行->分组最后一行
RANGE的 分组第一行->当前行,分组第一行->分组最后一行, 当前行->分组最后一行
只是这种场景都考虑周全了吗,还有没有漏考虑的,有啊。我们继续看看有哪些可能:
从分组第一行->当前行前n行 rows between unbounded preceding and n行 preceding
从分组第一行->当前行后n行 rows between unbounded preceding and n行 following
从当前行->当前行后n行 rows between current row and n行 following
从当前行前n行->当前行 rows between n行 preceding and CURRENT ROW
从当前行前n行->分组最后一行 rows between n行 preceding and unbounded following
从当前行后n行->分组最后一行 rows between n行 following and unbounded following
从当前行前n1行->到当前行前n2行 rows between n1行 preceding and n2行 preceding
从当前行后n1行->到当前行后n2行 rows between n1行 following and n2行 following
还有没有。有!
从当前行前n1行到当前行后n2行 rows BETWEEN n1行 preceding and n2行 following
还有没有比方从分组第一行后n行到当前行,从当前行到分组最后一行前n行啥的啊?
哦。那倒是没有了,对了,你脑子还不够迷糊啊,记这么多???
总算结束了,只是另一个窗体開始于当前行,结束于当前行的。只是这无意义,要了干啥呢?所以,算算,至少有9个。
考虑到rows 和range两套人马。这下又多了18个了。加上前面的6个,就是24个了。
只是后面多出来的这18个,用到的几率比前面6个要少不少。
对了。另一件非常重要的事要交代
不写between AND ,在有order BY 的情况下,就是分组第一行到当前行 BETWEEN unbounded preceding and current row
不写between AND ,在没有order BY 的情况下。就是分组第一行到分组最后一行; BETWEEN unbounded preceding and unbounded following
分析函数 VS 聚合函数
从上面的样例我们能够知道,分析函数和聚合函数的主要差异有:
1. 分析函数每组有多少行就返回多少行(好比多一个伪列)。而聚合函数是每组无论有多少行都被聚合成一行。
2. 分析函数的order by 和聚合函数order by 排序的概念不一样,分析函数的order BY 标记从分组第一行到当前行的范围圈定,然后根据这个范围,根据这个顺序開始聚合累加。集合函数oracle by它不影响数据,只影响排序。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
[Oracle] 分析功能(1)- 语法的更多相关文章
- 转-利用Oracle审计功能来监测试环境的变化
http://blog.csdn.net/luowangjun/article/details/5627102利用Oracle审计功能来监测试环境的变化 做过测试的人都应该会碰到这样的情况:测试发现的 ...
- oracle 存储过程的基本语法
原文:oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER) I ...
- 基于Cesium三维地图项目记录_通视分析功能的实现
实现了剖面分析功能之后,下面来看看如何实现通视分析,还是基本按照之前的思路实现: 了解软件LocaScape是怎么实现的: 网址如下:http://www.locaspace.cn/V3.0/help ...
- 论坛:设计实体-->分析功能-->实现功能 之 《分析功能》
其中 管理文章 的功能没有做,以下做的设计 浏览与参与 功能的步骤 分析功能 5个功能. 7个请求. 实现功能 Action, 7个方法 Service Dao Jsp For ...
- Oracle分析関数
Oracleの分析関数のサンプル集 概要 Oracleコミュニティでよく見かける分析関数の使用例を 習うより慣れろ形式で.分析関数のイメージを付けて.まとめて紹介します. Oracle11gR1で動作 ...
- 支付宝小程序与微信小程序开发功能和语法糖不同
最近开始负责公司webapp数据打通支付宝小程序,之前已经打通了微信小程序,现在根据支付宝小程序的开发文档在之前的模板上面做修改. 在修改模板的过程中,总结一下双方功能和语法糖的不同之处. 框架: a ...
- Oracle:DBMS_STATS.GATHER_TABLE_STATS的语法
转自: http://cjjwzs.iteye.com/blog/1143893 作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息. DBMS_STATS.G ...
- [转]ORACLE 审计功能
审计是对选定的用户动作的监控和记录,通常用于: u 审查可疑的活动.例如:数据被非授权用户所删除,此时安全管理员可决定对该 数据库的所有连接进行审计,以及对数据库的所有表的成功地或不 ...
- ORACLE分页查询SQL语法——最高效的分页
--1:无ORDER BY排序的写法.(效率最高)--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT ...
随机推荐
- 关于使用X-UA-Compatible来设置IE浏览器兼容模式
原文地址:http://www.cnblogs.com/nidilzhang/archive/2010/01/09/1642887.html 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外 ...
- 重新启动IIS服务的方法
WINDOWS提供WEB服务的IIS有时候会出现訪问过大导致站点打不开,这时重新启动IIS是最好的选择. 1.界面操作 打开"控制面板"->"管理工具"- ...
- EJB体系结构
为了适应企业的快速发展.缩短企业信息系统的设计和开发周期.降低构建信息系统的成本,Sun公司制订了Java2 SDK Enterprise Edition(J2EE)规范,定义基于组件的方式设计.开发 ...
- 用友CDM系统期初导入商品资料经验
1. 倒入商品资料,是导入表spkfk(商品档案表).spkfjc(商品总结存表),主要是将spkfk全部编码导入. 2. 导入客商资料,是导入表mchk(业务单位登记表).m ...
- 《Javascript高级程序设计》读书笔记之闭包
闭包 function createComparisonFunction(propertyName) { return function (object1, object2) { var value1 ...
- windows phone (18) Border元素
原文:windows phone (18) Border元素 Border类是对某一个对象的周围边框,背景,或者同时绘制两者,首先看一个简单的例子进行分析[作者:神舟龍] xaml文件: <!- ...
- 整理QTP知识之1
以下说明由网络其他文章整合而成. 一.关于QTP的说明 QTP是目前市场上占有率最高的一款自动化测试工具,也是每一位测试工作者最想掌握的工具之一,也是目前流行的基于GUI的功能自动化测试工具之一. Q ...
- 使用C++名单在文档处理和学生成绩管理系统相结合
对于学生成绩管理系统,我并不陌生,几乎学习C人的语言.做项目会想到学生成绩管理系统,我也不例外.在研究中的一段时间C语言之后,还用C语言到学生管理系统,然后做几个链接.计数,这个系统是以前的系统上的改 ...
- Android实现限制EditText输入文字的数量
一: 声明控件. TextView hasnumTV; TextView hasnum;// 用来显示剩余字数 int num = 50;// 限制的 ...
- 轻量级分布式RPC框架
随笔- 139 文章- 0 评论- 387 一个轻量级分布式RPC框架--NettyRpc 1.背景 最近在搜索Netty和Zookeeper方面的文章时,看到了这篇文章<轻量级分布式 ...