设为首页 加入收藏

TOP

Oracle分析函数(Analytic Functions) 深入理解
2017-04-26 10:22:51 】 浏览:302
Tags:Oracle 分析 函数 Analytic Functions 深入 理解

分析函数计算基于一组数据行的聚合值,它们不同于聚合函数的是,它们为每一组返回多行结果。分析函数是除ORDER BY子句之外,在查询语句中最后执行的。所有的join和所有的WHERE ,GROUP BY 和HAVING子句都在分析函数之前执行。所以分析函数只能出现在select或ORDER BY子句中。


下图为11.2版本官方文档中给出的语法示意图:


analytic_function


指定分析函数的名字,后面列出了所有的分析函数


arguments


分析函数可以有0到3个参数。参数可以是任何数值类型或可以隐式转换为数值类型的其他非数值类型。


analytic_clause


用OVER analytic_clause表明函数操作的是一个查询结果集。如果想过滤基于分析函数的查询结果,需要使用嵌套子查询。


query_partition_clause


用PARTITION BY子句来把查询结果集基于一个或多个value_expr分组。如果省略,分析函数把所有行当作一组。


order_by_clause


用order_by_claus指定在一组中数据如何排序。


ASC(default)|DESC


NULLS FIRST(default in DESC)|NULLS LAST(default in ASC)


windowing_clause


部分分析函数允许使用windowing_clause子句。


只有当指定了order_by_clause后才能指定这个子句。


ROWS指定使用物理行的window


RANGE指定使用逻辑偏移的window


详细信息请参考:http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions004.htm#i81407


下面为所有的分析函数,带*号的函数允许使用windowing_clause:


AVG *
CORR *
COUNT *
COVAR_POP *
COVAR_SAMP *
CUME_DIST
DENSE_RANK
FIRST
FIRST_VALUE *
LAG
LAST
LAST_VALUE *
LEAD
LISTAGG
MAX *
MEDIAN
MIN *
NTH_VALUE *
NTILE
PERCENT_RANK
PERCENTILE_CONT
PERCENTILE_DISC
RANK
RATIO_TO_REPORT
REGR_ (Linear Regression) Functions *
ROW_NUMBER
STDDEV *
STDDEV_POP *
STDDEV_SAMP *
SUM *
VAR_POP *
VAR_SAMP *
VARIANCE *


以AVG为例介绍分析函数的使用:


AVG也是一个聚合函数:


作为分析函数的例子:


eg1:单独使用


从输出可以看出函数计算出了整体的平均值,并输出到每一行


eg2:使用query_partition_clause


从输出可以看出,AVG计算出了每个部门的平均值,并输出到对应的行。


eg3:使用order_by_clause


从输出结果可以看出,每个部门的行都按sal做了升序排序。


eg4:使用windowing_clause


从输出的结果可以看出,分析函数对每一组中的每一行的输出结果是把它自己与它的上一行和下一行这三行求平均值。


分析函数太多,这里就不一一介绍功能了,有兴趣的同学可以点开上面的连接,去查看对应的功能。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇PL\SQL Developer连接本地Oracle .. 下一篇Ubuntu搭建MySQL,Navicat Premiu..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目