oracle 数据分析函数,ORACLE分析函数(一)
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 数据分析函数,ORACLE分析函数(一)相关推荐
- 用toad实现oracle数据迁移,Oracle 使用TOAD实现导入导出Excel数据
在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工作,对数据库进行日常管理也是需要很多SQL脚本才能完成的.Quest Software为此提供了高效的Orac ...
- 模拟断电oracle数据不一致,Oracle数据库案例整理-Oracle系统运行时故障-断电导致数据文件状态变为RECOVER...
1.1 现象描述 异常断电,数据库数据文件的状态由ONLINE变为RECOVER.系统显示如下信息: SQL> select file_name ,tablespace_name , ...
- 复用Oracle数据文件,Oracle 多元复用数据库文件
为尽量降低丢失控制文件或重做日志文件的可能性,数据库文件的多元复用(multiplexing)可减少或消除由于介质故障而造成的数据丢失问题.使用从Oracle 10g 开始引入的ASM 实例可在某种程 ...
- 达梦数据库迁移oracle数据乱码,oracle迁移到达梦数据库之存储过程中char类型的不同处理...
oracle迁移到dm之存储过程中char类型的不同处理 1.问题描述: oracle迁移到dm后,oracle正常使用的存储过程,在dm中使用报错:字符串截断 2.查找原因: 2.1 对比oracl ...
- oracle 数据分列,oracle怎么按照范围分列!求高手帮忙.
oracle如何按照范围分列!求高手帮忙... 数据表如图, 按照范围分为小于45KG,45-100KG 之间 100-300KG之间 300-500KG之间,500-1000KG之间各为一列,怎么划 ...
- 复用Oracle数据文件,Oracle控制文件的备份、恢复以及多路复用
前言 今天给大家带来有关Oracle控制文件的技术分享.不积跬步无以至千里,不积小流无以成江海.Oracle技术博大精深,以我一个人的力量,那无异于蜉蝣于天地,沧海之一粟.在此,笔者抛砖引玉,希望读者 ...
- oracle数据基本操作,Oracle数据库基本操作
1.查询存在的主键约束 select segment_name,partition_name,tablespace_name from dba_extents where tablespace_nam ...
- 4104 oracle 数据文件名,Oracle 11g 常遇到ora-01034错误,这是为什么?
Errors in file d:\app\gerry\diag\rdbms\orcl\orcl\trace\orcl_psp0_5252.trc: ORA-27300: OS system depe ...
- oracle 数据掩码,oracle格式掩码
to char 是把日期或数字转换为字符串 to date 是把字符串转换为数据库中得日期类型 ? 转换函数 ? TO_CHAR 使用TO_CHAR函数处理数字 TO_CHAR(number, '格式 ...
- oracle 数据树,ORACLE 树形数据
引用:CREATE TABLE basic ( id number(8) primary key, name varchar(50) unique, ismemo char(1) default '0 ...
最新文章
- NLP情感分析 动手学深度学习博客
- JAVA (集合和数据结构)
- Linux 实时查看日志文件的 4 种方法
- 七丶青龙nvjdc部署教程+短信验证登录对接傻妞
- Android知识点 - 收藏集 - 掘金
- centos6,7grub防止其他用户通过单用户系统破解root密码
- how to avoid transport error when cloning project in Eclipse
- 程序员不会SQL有多难?高级工程师:可能工作都找不到!
- 【目标识别】SIFT算法理论部分
- desktop docker 无法卸载_docker 安装教程和常见问题
- Chrome扩展程序开发文档(中文译文)
- C51红外接收与发射控制及原理编码与解码
- linux opensource,GitHub - opensourceteams/linux: linux命令
- 数据分析(1)案例和面试题
- 弦民谣吉他音源 Orange Tree Samples Evolution Steel Strings Kontakt
- 二级python——绘制七彩圆圈
- 《了不起的盖茨比》中体现的人生观、价值观、爱情观
- 搭建视频播放服务器(nginx web服务器)
- qpython3l安装包下载_python安装包 官方版
- 遭遇EBUIITI.SYS,QBNLWVQCIMQBOS.DLL,JSRLDZLVYUNXEO.DLL,JSRLDZLVYUNXEO.DLL等