oracle中DateTime格式的标准差函数

时间:2016-05-17 19:42:02

标签: c# excel oracle

如何使用时间格式的标准差。 我有DateTime数据列,我想使用标准偏差函数 但是,当我在excel中使用这些数据时,我的结果并不相同。

1 个答案:

答案 0 :(得分:0)

显然,Oracle没有实现日期的平均值和标准差(这很奇怪 - 它们非常有意义)。相反,你需要减去一个固定的日期(SYSDATE是一个完美的候选人);对于标准偏差,您不需要添加任何内容,因为从样本的所有成员中减去常量不会更改标准偏差。如果要计算平均值,可以将SYSDATE添加回结果。标准差以天为单位;如果你需要它可以在几小时内乘以24,如果你需要它可以在8秒内乘以86400等等。

示例:

with input_dates (dt) as (
        select to_date ('2016/03/20 13:30:31', 'yyyy/mm/dd hh24:mi:ss') from dual union all
        select to_date ('2016/03/22 03:14:32', 'yyyy/mm/dd hh24:mi:ss') from dual union all
        select to_date ('2016/03/30 09:12:43', 'yyyy/mm/dd hh24:mi:ss') from dual union all
        select to_date ('2016/04/02 19:22:35', 'yyyy/mm/dd hh24:mi:ss') from dual 
     )
select stddev(0+to_number(sysdate - dt)) as sample_sd, 
       stddev_pop(dt - sysdate)          as population_sd
from   input_dates;

输出:

 SAMPLE_SD POPULATION_SD
---------- -------------
6.39233719    5.53592639

在Excel中:

         3/20/2016 13:30
          3/22/2016 3:14
          3/30/2016 9:12
          4/2/2016 19:22
STDEVA       6.392417475
STDEV.P      5.535995925

结果确实略有不同;这可能是由于四舍五入,无论是将日期翻译成数字还是采用平方根等等。