Cloud Spanner 函数中是否有等效的 STDDEV?

Is there a STDDEV equivalent in Cloud Spanner functions?

我在 the documentation 中没有看到它;它可能是我没有注意到的现有功能的一部分,还是以其他方式可用?

您发来的官方文档中没有这个功能,估计现在还没有。如果您需要类似的东西,您可能应该自己以编程方式计算标准差。您有条目数的 AVG function that helps you get at least the median value which will be helpful in the calculation of the standard deviation and the COUNT 函数。

double standardDeviation ; // standard deviation
double sumOfDiffrences = 0; 

for ( int i = 0; i < count; i++ ){

sumOfDiffrences = sumOfDiffrences + pow((entry(i)-avg),2); // entry(i) is an entry of the column you want to create the S.D.

}
standardDeviation = sqrt((sumOfDiffrences)/(count-1));

正如 Andrei Tigau 所提到的,目前还不支持 STDDEV。也就是说,您需要分两次计算。假设您对 YourTable 的 x 列感兴趣,

SELECT SQRT(SUM(POW(x - avg, 2)/(n-1)))
FROM (SELECT AVG(x) AS avg, COUNT(*) AS n FROM YourTable)
  CROSS JOIN YourTable;

您也可以尝试遵循一次性解决方案。

SELECT SQRT(s2/(n-1) - POW(s/n, 2))
FROM (
  SELECT COUNT(*) AS n, SUM(x) AS s, SUM(x*x) AS s2
  FROM YourTable
);

根据类型,您可能必须将其强制转换为 double(尤其是对于 s2)以避免溢出。两者都会出现浮点错误。

STDDEV 自 2020 年 6 月 3 日起受支持。

https://cloud.google.com/spanner/docs/release-notes?hl=en#June_03_2020