oracle 计算标准差函数,oracle 计算方差函数的疑问?(急)

方差函数VARIANCE(x),

具体方法是:

设方差s,a为x1,x2...xn的平均值 ,

则s = [(x1-a)^2+(x2-a)^2+(x3-a)^2+……(xn-a)^2]/n

标准差函数STDDEV(x),

具体算法是:

方差开方。

设标准查为& ,则 &^2 = s

但是我通过以下的实验,发现oracle是这样计算variance()的,

s = [(x1-a)^2+(x2-a)^2+(x3-a)^2+……(xn-a)^2]/n-1 ,注意不是除以n,而是n-1

实验:

create table TEST_STDDEV_VARIANCE(col1 number(9,2),col2 number(9,2)) ;

insert into TEST_STDDEV_VARIANCE values(1,1) ;

insert into TEST_STDDEV_VARIANCE values(2,3) ;

insert into TEST_STDDEV_VARIANCE values(3,9) ;

insert into TEST_STDDEV_VARIANCE values(4,15) ;

SELECT * FROM TEST_STDDEV_VARIANCE ;

COL1   COL2

-----  -----

1           1

2           3

3           9

4           15

SELECT VARIANCE(COL1) ,VARIANCE(COL2) FROM TEST_STDDEV_VARIANCE ;

VARIANCE(COL1)                            VARIANCE(COL2)

----------------------------------------       --------

1.66666666666666666666666666666666666667           40

SELECT STDDEV(COL1) ,STDDEV(COL2) FROM TEST_STDDEV_VARIANCE ;

STDDEV(COL1)                                        STDDEV(COL2)

--------------------------------------------------       --------

1.29099444873580562839308846659413320361                 6.32455532033675866399778708886543706744

注意VARIANCE(COL1)=(1.5^2 + 0.5^2 + 0.5^2 + 1.5^2) /3 = 5/3 =1.66666666666666666666666666666666666667

而如果按照方差公式计算应该是VARIANCE(COL1)=(1.5^2 + 0.5^2 + 0.5^2 + 1.5^2) /4 =5/4=1.25

为什么oracle的分组函数的计算公式不是[(x1-a)^2+(x2-a)^2+(x3-a)^2+……(xn-a)^2]/n ,而是

s = [(x1-a)^2+(x2-a)^2+(x3-a)^2+……(xn-a)^2]/n-1  呢,真有点疑问,有知道的高手请指点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值