如何使用时间格式的标准差。 我有DateTime数据列,我想使用标准偏差函数 但是,当我在excel中使用这些数据时,我的结果并不相同。
答案 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
结果确实略有不同;这可能是由于四舍五入,无论是将日期翻译成数字还是采用平方根等等。