Sql server 在SQL聚合函数中手动添加其他数字

Sql server 在SQL聚合函数中手动添加其他数字,sql-server,sql-server-2012,Sql Server,Sql Server 2012,在上表中,我可以使用STDEV()函数轻松获得标准偏差,但现在我想在计算标准偏差之前向表中添加一个额外的数字。额外的数字不是来自数据库,而是在SQL查询中手动写入的 SELECT STDEV(TempC) FROM myTable WHERE Time BETWEEN dateadd(HOUR, -4, GETDATE()) AND GETDATE() 如何有效地执行此操作?使用UNION ALL手动添加所需的值 TempC ---- 32 27 36 30 37 (manually ad

在上表中,我可以使用
STDEV()
函数轻松获得标准偏差,但现在我想在计算标准偏差之前向表中添加一个额外的数字。额外的数字不是来自数据库,而是在SQL查询中手动写入的

SELECT STDEV(TempC) 
FROM myTable 
WHERE Time BETWEEN dateadd(HOUR, -4, GETDATE()) AND GETDATE()

如何有效地执行此操作?

使用
UNION ALL
手动添加所需的值

TempC
----
32
27
36
30
37 (manually added number)

使用基于其他聚合的标准偏差公式。尝试使用
(sqrt((计数(TempC)+1)*(总和(TempC*TempC)+C*C)-(总和(TempC)+C)*(总和(TempC)+C))/count(TempC))
使用
联合所有
参见快速计算方法。是的,您可以对单个组使用
union all
。如果您不知道outout中有多少行,那么它会变得更复杂。您的解决方案工作完美,也非常简单。
TempC
----
32
27
36
30
37 (manually added number)
SELECT STDEV(TempC) 
FROM   (
           SELECT TempC FROM myTable
           UNION ALL
           SELECT TempC = 37
       ) T