现在的位置: 首页 > 综合 > 正文

分析函数的语法-转自Oracle专家高级编程

2013年10月01日 ⁄ 综合 ⁄ 共 2631字 ⁄ 字号 评论关闭
分析函数的语法
有26个可以使用的分析函数。其中,有一些同名,比如AVG和SUM。其他的有新的名字,并且提供了新的功能。
1)AVG(<distinct|all>expression)
用于计算一个组和窗口内表达式的平均值。Distinct用于去掉重复的数据后得到该组的平均值。
2)CORR(expression,expression)
返回一对表达式的相关系数,他们是如下的缩写:
COVAR_POP(expr1,expr2)/STDDEV_POP(expr1)*STDDEV_POP(expr2))
从统计上讲,相关性是变量之间的关联的强度,变量之间的关联意味着在某种程度上一个变量的值可以由其他变量的值进行预测。通过范围一个-1到1之间的一个数,相关系数给出了关联的强度,其中0,表示不关联。
3)COUNT(<distinct><*><expression>)
它将对一组内发生的事情进行计数。如果指定*或者一些非空常数,count将对所有的行计数。如果指定一个表达式,count返回表达式非空赋值计数。可以使用distinct将记录去掉一组中完全相同的数据后出现的行数。
4)COVAR_POP(expression,expression)
返回一对表达式的总体协方差
5)COVAR_SAMP(expression,expression)
返回一对表达式的样本协方差。
6)CUME_DIST
计算一行在组中的相对位置。CUME_DIST总是返回大于0、小于或者等于1的数,该数标识该行在N行中的位置。例如,在一个3行的组中,返回的累积分值为1/3、2/3、和3/3。
7)DENSE_RANK
根据ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其他行的相对位置。组内的数据按照ORDER BY子句进行排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDER BY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null是相等的)。密集的序列返回的是没有间隔的数。
8)FIRST_VALUE
返回组中的第一个值
9)LAG(expression,<offset>,<defalut>)
LAG可以访问结果集中的其他行而不用进行自连接.它允许去处理游标,就好像游标是一个数组一样.在给定组中可参考当前行之前的行,这样就可以从组中与当前行一起选择以前的行.关于如何获取"下一行"可以参看LEAD
Offset是一个正整数,其默认值为1。若索引超出窗口的范围,就返回默认值(默认返回是组中的第一行)。
10)LAST_VALUE
返回组中的最后一个值。
11)LEAD(expression,<offset>,<default>)
Lead与LAG相反,LAG让您可访问组中当前行之前的行,而LEAD让您可以访问组中当前行之后的行。
Offset是一个正整数,其默认值是1.若索引超出窗口的范围,就返回默认值(默认只返回的是组中最后一行)。
12)MAX(expression)
在一个组的窗口中查找表达式的最大值。
13)MIN(expression)
在一个组的窗口中查找表达式的最小值。
14)NTITLE(expression)
将一个组分为“表达式值”的散列表示
例如,如果表达式=4,则给组中的每一行分配一个数(从1到4)。如果组中有20行,则给前五个分配1,给下5行分配2等等。如果组中的基数不是由表达式平均分开的,则对这些行进行分配的时候,组中就没有任何percentile的行数比其他prcentile的行数超过一行,最低的prcentile是那些拥有额外行的prcentile。例如,若表达式=4,行数=21,则percentile=1的有6行,percentile=2的有5行等等。
15)PERCENT_RANK
它与CUME_DIST(累积分配)函数类似。对于一个组中给定的行数来说,在计算那行的序号的时候,先减去1,然后除以1(1小于组中所求的行数)。该函数总是返回0到1(包括1)之间的数。
16)RANK
根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其他行的相对位置。组中的数据按照ORDER BY 子句排序,然后给每一行赋一个数字序号,从而形成一个序列,该序列从1开始,往后累加,每次ORDER BY 表达式的值发生变化的时候,该序列也随之增加。有同样值的行得到同样的数字序号。然后,如果两行的确得到同样的排序,则序数随后跳跃。若两行序数为1,则没有序数2,序列给组中的下一行分配3,DENSE_RANK则没有任何跳跃值。
17)RATIO_TO_REPORT(expression)
该函数计算expression/sum(expression))的值
它给出相对于总数的百分比,即当前行对sum的贡献。
18)REGR_xxxxxxxx(expression,expression)
这些线性回归函数适合最小二乘法回归线,有9个不同的回归函数可以使用。
19)ROW_NUMBER
返回序组中一行的偏移量,从而可用于按特定标准排序的行号。
20)STDDEV(expression)
计算当前航关于组的标准偏离
21)STDDEV_POP(expression)
该函数计算总体标准偏离,并返回总体变量的平方根,其返回值与VAR_POP函数的平方根相同。
22)STDDEV_SAMP(expression)
该函数计算累计样本标准偏离,并返回样本变量的平方根,其返回值与VAR_SAMP函数的平方根相同。
23)SUM(expression)
该函数计算组中表达式的累积值
24)VAR_POP(expression)
该函数返回非空集合的总体变量(忽略NULL),VAR_POP进行如下计算:
(SUM(expr*expr)-SUM(expr)*SUM(expr)/COUNT(expr)/COUNT(expr))
25)VAR_SAMP(expression)
该函数返回非空集合的样本变量(忽略NULL),VAR_SAMP进行如下计算:
(SUM(expr*expr)-SUM(expr)*SUM(expr)/COUNT(expr)/COUNT(expr)-1)
26)VARIANCE(expression)
该函数返回表达式的变量,Oracle计算该变量如下:
如果表达式中的行数为1,则返回0
如果表达式中的行数大于1,则返回VAR_SAMP

抱歉!评论已关闭.