分享
 
 
 

理解数据库的统计集聚函数

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

为了选用正确的函数,你必须具体地了解现在Oracle SQL中用到的一系列集聚函数。Oracle8和Oracle9都支持的函数包括:

AVG

CORR

COUNT

COVAR_POP

COVAR_SAMP

MAX

MIN

REGR_

STDDEV

STDDEV_POP

STDDEV_SAMP

SUM

VAR_POP

VAR_SAMP

VARIANCE

几乎所有的集聚函数都将忽略那些NULL列。但是有一个例外,那就是COUNT(*),这个函数将计算所有的纪录而不管是否存在NULL列。在一般集聚函数所有数据都为NULL时,集聚函数的返回值为NULL,但是COUNT(col)的返回值为零。

MIN函数和MAX函数

MIN函数和MAX函数根据排序后返回最小值和最大值。你应该明白那些函数都是基于对它们的数据类型的排序结果。为了避免排序错误,日期和数字都必须定义为与其对应的数据类型。例如,MAX(TO_CHAR(date))会把1月排在2月之前。

STDDEV,STDDEV_POP,STDDEV_SAMP和VARIANCE,VAR_POP,VAR_SAMP

标准差和方差是衡量数据扩散范围的标准。假如一列中的数据都相同的话,那么标准差和方差就为零。在实际情况中,标准差描述的是反映平均值的一个锥形曲线。对于现实世界人口,有68%的数据应在一个标准差之内,96%的数据应在2个标准差之内。

据统计表明:人口的样本方差并不能很好的反映整体人口的方差,这个事实就决定了存在3个标准差函数和3个方差函数。通过以下的SQL脚本来看看它的作用:

drop table agg;

create table agg(n integer);

begin

for i in 0..1000 loop

insert into agg values(i);

end loop;

end;

/

show errors;

select 'Population' d,count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)

from agg

union

select 'Sample',count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)

from agg where mod(n,2) = 0

union

select 'Sample',count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)

from agg where mod(n,10) = 0

union

select 'Sample',count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)

from agg where mod(n,100) = 0;

得到的结果是

虽然这些数据是人为计算得到的,并没有在此锥形曲线上,但是这个例子反映了_SAMP和_POP的差别。从这个例子看出,样本的STDDEV_POP(N)列的数据比样本的STDDE(N)列数据更接近实际的STDDECV(N)列数据。

因此,当你应用STDDEV函数时,认真考虑你处理的是什么数据是非常重要的。假如你想得到一些数据的真实标准差,那么你就应该用STDDEV_SAMP。假如你只是处理一些小型的抽样样本,只希望得到人口标准差的近似值的话,那么你应该用STDDEV_POP。

VAR_SAMP就是STDDEV_SAMP的平方,相似的VAR_POP就是STDDEV_POP的平方。这两个函数并不常用,原因是他们的成员都是带平方的。

COVAR_POP 和 COVAR_SAMP

协方差和标准差相似,但是协方差能衡量一列数据对其他列的影响。假如存在一列是不可改变的(意味着次列与其他列无任何关系),那么协方差就为零,表示位COVER_SAMP(n,0)。

假如一列的变化和另一列有关,那么协方差值就会变大。COVER_POP适用于计算的人口样本方差的近似值,而COVER_SAMP则应该用于计算数据的实际协方差。

CORR

相关性是用于衡量相关系数的。它将两列的相关程度规格化为-1和1之间的一个数值。假如是1或者-1的话,就说明他们是完整的线性相关。表示位CORR(n,n)。

假如相关性为零,那么意味着一个变量对另一个变量将没有影响。假如两列根本就没有改变,那就意味着这列的标准差为零,也就是说对其计算相关性是没有意义的,所以此时CORR的返回值为空。举例来说,CORR(n,1)的返回值将为空。

REGR_

假设已知两数据相关,回溯函数能通过已知数据画一条能反映他们的发展趋势的曲线。并能通过这条线来在已知数据的基础上估计得到新的数据。事实上,由于得到的结果一条线而不是数字——所有的结果都是通过图中的线描述出来的,所以说回溯函数是一系列与众不同的函数。在图中,我们认为第一表达式为“Y轴”,而第二表达式为“X轴”。

回溯函数是我们能进行一些初步估计。

估计近似值的公式为:

PRed1 = (pred2 * regr_slope(eXPr1,expr2)) + regr_intercept(expr1,expr2)

pred2 = (pred1 - regr_intercept(expr1,expr2)) / regr_slope(expr1,expr2)

回溯函数要求有两个数型参数。假如你要对日期数据进行操作,那么你必须先将这些数据转换成线行数类型。在Oracle SQL中,最好的办法就是就这些日期间去一个参照日期,从而得到对应的不同的天数(天数的类型符合要求了)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有