1

只是想知道有人知道 STDEV() 背后的公式(适用于任何版本的 sql server),或者为什么这些小数等值的标准偏差不同。

我的目标是向我们的 QA 部门解释这种计算差异,然后他们可以向我们的客户解释。

用于小数的 SQL 函数 STDEV() 似乎永远无法匹配 excel,非十进制整数似乎匹配没有问题。

我正在尝试计算样本的偏差,而不是总体。

示例值:99.99991、99.99992

Excel STDEV(或任何在线标准偏差计算器):7.07107E-06

SQL:7.13664510111607E-06

我尝试了多个版本的 SQL 服务器,以及 SQL 和 Excel 2007 和 2019 中此函数的所有变体,我永远无法让它们与这些值匹配。

与本网站上的计算相比,SQL 显然做了一些稍微不同的事情:

https://www.mathsisfun.com/data/standard-deviation-calculator.html

tSQL 重现:

declare @table table (theNumber float)
insert into @table (theNumber) Values (99.99991), (99.99992)
select STDEV(theNumber) from @table

任何帮助将非常感激!

谢谢!

4

1 回答 1

0

如果输入只知道小数点后 5 位,那么在标准差结果中使用任何小数点充其量都是有问题的。

考虑:

declare @table table (groupNo int, theNumber float)
insert into @table (groupNo, theNumber) Values
(1, 99.9999051), (1,99.9999249),
(2, 99.99991), (2,99.99992),
(3, 99.9999149), (3,99.9999151)
select groupNo,ROUND(theNumber,5) from @table
select groupNo,STDEV(theNumber) from @table group by groupNo

第一个结果集是这样的:

groupNo (No column name)
1   99.99991
1   99.99992
2   99.99991
2   99.99992
3   99.99991
3   99.99992

第二个结果集是这样的:

groupNo (No column name)
1   1.40160927359572E-05
2   7.13664510111607E-06
3   1.9073486328125E-06

所以我建议你应该向你的用户展示的最多的计算是7E-06,即使那是粗略的,在这一点上 SQL 和 Excel 是一致的。

于 2022-02-04T15:17:05.423 回答