我的数据库中有一列数字。我该如何计算标准差?我不想使用stddev函数。
答案 0 :(得分:1)
因为我好奇,我决定测试实际的STDEV()。现在,我无法确定内置功能。</ p>
我很接近...... 0.000141009220002264或0.00748%折扣
此外,总平均值和计数必须转换为浮点数(方差随小数值增大)
下面的例子是我的10年期收益率的国债利率表(不重要)
Select SQLFunction = Stdev([TR_Y10])
,ManualCalc = Sqrt(Sum(Power(((cast([TR_Y10] as float)-B.TotalAvg)),2) / B.TotalCnt))
,Variance = Stdev([TR_Y10]) - Sqrt(Sum(Power(((cast([TR_Y10] as float)-B.TotalAvg)),2) / B.TotalCnt))
From [Chinrus-Shared].[dbo].[DS_Treasury_Rates]
Join (Select TotalAvg=Avg(cast([TR_Y10] as float)),TotalCnt=count(*) From [Chinrus-Shared].[dbo].[DS_Treasury_Rates]) B on 1=1
返回
SQLFunction ManualCalc Variance
1.88409468982299 1.88395368060299 0.000141009220002264
答案 1 :(得分:0)
标准差是方差的平方根除以n。
方差是平均值与观测值之差的平方和。
因此,在大多数数据库中,您可以使用窗口函数:
select sqrt(avg(var))
from (select square(t.x - avg(t.x) over ()) as var
from t
) t;
注意:
square()
函数可能有其他名称(例如power()
)。sqrt()
函数可能有其他名称。