MySQL:计算值/频率对的标准偏差

时间:2014-02-04 22:57:19

标签: mysql sql

我在MySQL数据库中有一个表,如下所示 - 是否可以在单个查询中计算总体的标准差?我可以找到计算一列数据的标准偏差的方法(即只是频率),我需要的是集合的标准差[1080,1090,1090,1090 ......,2000,2000,2000,2000 ,...]等?

Time    Frequency
-----------------
1080    1
1090    10
2000    100
2010    50
2020    5
2030    3    

1 个答案:

答案 0 :(得分:2)

你基本上有两个选择。展开数据以使每个值具有多行,并使用std_pop()。或者,自己实施计算。

标准偏差基本上是值之和减去平均值的平方根。如果我有正确的计算,你可以这样做:

select sqrt(sum(tf.frequency * power(tf.time - tfavg.avgtime, 2.0)) / tfavg.cnt)
from tf cross join
     (select sum(time*frequency) / sum(frequency) as avgtime,
             sum(frequency) as cnt
      from tf
     ) tfavg;