【发布时间】:2021-01-06 03:02:37
【问题描述】:
TempC
----
32
27
36
30
SELECT STDEV(TempC)
FROM myTable
WHERE Time BETWEEN dateadd(HOUR, -4, GETDATE()) AND GETDATE()
在上表中,我可以使用STDEV() 函数轻松获得标准差,但现在我想在计算其标准差之前将一个额外的数字添加到表中。额外的数字不是来自数据库,而是在 SQL 查询中手动编写的。
TempC
----
32
27
36
30
37 (manually added number)
我怎样才能有效地做到这一点?
【问题讨论】:
-
使用基于其他聚合的标准差公式。
-
试试
(sqrt((count(TempC)+1) * (sum(TempC * TempC) + C * C) - (sum(TempC) + C) * (sum(TempC) + C)) / count(TempC)) -
使用
UNION ALL -
查看快速计算方法。 en.m.wikipedia.org/wiki/… 是的,您可以将
union all用于单个组。如果您不知道 outout 中有多少行,那么它会变得更加复杂。
标签: sql-server sql-server-2012