[置顶] ORACLE分析函数(1)
分析函数式ORACLE提供的用来进行数据统计的强有力工具,与我们常用的聚合函数具有一些相似性,但又完全不同。聚合函数,首先会将数据进行分组,然后对每一组数据进行运算,如求和sum,求平均AVG等,对于聚合函数,每一个分组返回一条数据结果行。分析函数,同样也会对数据进行求和或者求平均等运算,但是,分析函数计算的基础并不是分组,而是窗口,而且分析函数根据每条记录会返回一个处理结果。
首先,看一下下面的例子:
SQL> select prod_subcategory_id,1 from products where prod_subcategory_id > 2053 order by prod_subcategory_id; PROD_SUBCATEGORY_ID 1
------------------- ----------
2054 1
2054 1
2054 1
2054 1
2054 1
2054 1
2055 1
2055 1
2055 1
2055 1
2055 1
2055 1
2055 1
2056 1
2056 1
2056 1
2056 1
2056 1 已选择18行。 SQL> select prod_subcategory_id,count(1) from products where prod_subcategory_id > 2053 group by prod_subcategory_id order by prod_subcategory_id; PROD_SUBCATEGORY_ID COUNT(1)
------------------- ----------
2054 6 //对分组1求和
2055 7 //对分组2求和
2056 5 //对分组3求和
下面,是分析函数的执行结果
分析函数的执行过程:1:除order by子句之外的sql语句,如select,where等===》2:分析函数====》3:order by 子句。
执行分析函数时,首先会对步骤1的执行结果按照rownum进行排序(有分析函数中的order by子句决定),对排序后的结果,依次处理结果集中的每一条记录。当处理第一条记录时,分析函数count()的统计范围为第一条记录,当处理第二条记录时,处理范围为第一条记录和第二条记录,依次类推,处理第n条记录时,count统计范围为第一条记录和第n条记录之间的所有记录。
正如在图片中展示的一样,我们将分析函数的处理范围称为窗口,(窗口的处理范围是可以由我们来指定的)。
在进一步了解分析函数之前,首先来看一下分析函数的语法格式:
常见的分析函数:
SUM * : 该函数计算组中表达式的累积和
MIN * : 在一个组中的数据窗口中查找表达式的最小值
MAX * : 在一个组中的数据窗口中查找表达式的最大值
AVG * :用于计算一个组和数据窗口内表达式的平均值。
COUNT * : 对一组内发生的事情进行累积计数
RANK : 根据 ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置
DENSE_RANK : 根据 ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置
FIRST : 从 DENSE_RANK 返回的集合中取出排在最前面的一个值的行
LAST : 从 DENSE_RANK 返回的集合中取出排在最后面的一个值的行
FIRST_VALUE * : 返回组中数据窗口的第一个值
LAST_VALUE * : 返回组中数据窗口的最后一个值。
LAG : 可以访问结果集中的其它行而不用进行自连接
LEAD : LEAD 与 LAG 相反, LEAD 可以访问组中当前行之后的行
ROW_NUMBER : 返回有序组中一行的偏移量,从而可用于按特定标准排序的行号
STDDEV *: 计算当前行关于组的标准偏离
STDDEV_POP *: 该函数计算总体标准偏离,并返回总体变量的平方根
STDDEV_SAMP *: 该函数计算累积样本标准偏离,并返回总体变量的平方根
VAR_POP * : 该函数返回非空集合的总体变量(忽略 null )
VAR_SAMP * : 该函数返回非空集合的样本变量(忽略 null )
VARIANCE * : 如果表达式中行数为 1 ,则返回 0 ,如果表达式中行数大于 1 ,则返回 VAR_SAMP
COVAR_POP * :返回一对表达式的总体协方差
COVAR_SAMP *:返回一对表达式的样本协方差
CORR * :返回一对表达式的相关系数
CUME_DIST : 计算一行在组中的相对位置
NTILE : 将一个组分为 " 表达式 " 的散列表示
PERCENT_RANK : 和 CUME_DIST (累积分配)函数类似
PERCENTILE_DISC : 返回一个与输入的分布百分比值相对应的数据值
PERCENTILE_CONT : 返回一个与输入的分布百分比值相对应的数据值
RATIO_TO_REPORT : 该函数计算 expression/(sum(expression)) 的值,它给出相对于总数的百分比
REGR_ (Linear Regression) Functions *: 这些线性回归函数适合最小二乘法回归线,有 9 个不同的回归函数可使用
LISTAGG :对值进行连接
NTH_VALUE *:返回窗口中的n行的数据
[置顶] ORACLE分析函数(1)的更多相关文章
- [置顶] Oracle job procedure 存储过程定时任务
oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; selec ...
- [置顶] Oracle 11g R2 RAC:使用 srvctl 工具管理 service 资源
1.使用 srvctl 工具创建 service 资源 srvctl add service -d db_unique_name -s service_name {-r "preferred ...
- [置顶] Oracle 11g R2 ASM:了解 Oracle ASM 基本概念
About Oracle ASM Instances About Oracle ASM Disk Groups About Mirroring and Failure Groups About Ora ...
- [置顶] Oracle GoldenGate 系列:使用 Oracle ASM API DBLOGREADER 时遇 ora-01031 错误
今天在自己新搭建的 Oracle ACFS 文件系统上测试 GoldenGate ,启动 extract 进程报如下错误: 2013-08-27 14:58:39 ERROR OGG-00446 ...
- [置顶] Oracle 11g ASM:如何在 ASMCMD 命令行工具中创建 Oracle ACFS 文件系统
实验环境:Oracle 11g R2 RAC (11.2.0.3.5) Oracle Enterprise Linux 5.6 x86 1.创建 ASM 磁盘组 在两节点 ...
- [置顶] oracle存储过程中单引号及字符串拼接处理
在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义.单引号的使用是就近配对,即就近原则.而在单引号充当转义角色时相对不好理解 1.从第二个单引号开始被视为转义符,如果第二个单引号后 ...
- [置顶] oracle 快速查询数据库各种信息、及转换对应java代码
1 查询表中数据量 select 'select '||''''||t.TABLE_NAME||''''||' as table_name, count(*) from '|| t.TABLE_NAM ...
- [置顶] Oracle 11g Data Guard Role Transitions: Failover
Role TransitionsInvolving Physical Standby Databases A database operates in one of the following mut ...
- [置顶] Oracle学习路线与方法
还没有整理好.... 1.学习路线 Oracle官方文档:2 Day DBA-->2 Day+Performance Tuning Guide--->Administrator's Gui ...
随机推荐
- UVa 10213 (欧拉公式+Java大数) How Many Pieces of Land ?
题意: 一块圆形土地,在圆周上选n个点,然后两两连线,问把这块土地分成多少块? 分析: 首先紫书上的公式是错的,不过根据书上提供的思路很容易稍加修改得到正确答案! 然后推公式吧,这里用到平面图的欧拉公 ...
- LeetCode Lowest Common Ancestor of a Binary Search Tree (LCA最近公共祖先)
题意: 给一棵二叉排序树,找p和q的LCA. 思路: 给的是BST(无相同节点),那么每个节点肯定大于左子树中的最大,小于右子树种的最小.根据这个特性,找LCA就简单多了. 分三种情况: (1)p和q ...
- mysql修改表、字段、库的字符集
在一次导入数据表(MYISAM)的经历:复制过来的表打开后中文出现乱码,肯定是字符集出现了不致的问题,所以从原数据库导出.sql文件,修改其中的创建表的语句,加入字符集DEFAULT CHARSET= ...
- Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用
Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用 在串口编程模式下,open未设置O_NONBLOCK或O_NDELAY的情况下. c_cc[VTIME]和c_cc[VMIN] ...
- SharePoint 2010 获取列表中所有数据(包括文件夹内)的方法
转: http://blog.csdn.net/wangwenism/article/details/8751411 SharePoint的列表能存储文件以及文件夹,用户使用的时候,经常会建几个分类文 ...
- C#.NET开源项目、机器学习、商务智能
所以原谅我,不能把所有的都发上来,太杂了,反而不好. 1..NET时间周期处理组件 这个组件很小,主要是对时间日期,特别是处理时间间隔以及时间范围非常方便.虽然.NET自带了时间日期的部分功能,但可能 ...
- WCF配置文件详解(一)
<?xml version="1.0" encoding="utf-8" ?><configuration> <!-- &l ...
- java jvm学习笔记八(实现jar包的代码签名)
欢迎装载请说明出处:http://blog.csdn.net/yfqnihao/article/details/8267669 课程源码:http://download.csdn.net/detai ...
- [JDBC-2] JDBC CURD
package com.amuos.jdbc.curd; import java.sql.Connection; import java.sql.ResultSet; import java.sql. ...
- NOIP2011 铺地毯
1铺地毯 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的 ...