计算SQL中忽略空值的4个数字的平均值

我想计算 SQL 中 4 个数字的平均值。条件是如果 4 个数字中的任何一个为空,则不应考虑这些数字来计算平均值

像 (12,null,null,3) 应该给出 15/2 = 7.5 列表中的任何数字都可以为空

回答

您可以使用VALUEStable-value 构造函数对值进行逆透视,然后使用 获得值的平均值AVG()。该AVG()函数将忽略这些NULL值:

SELECT AVG(x)
FROM (VALUES (12.0), (NULL), (NULL), (3.0)) v (x)

如果值存储在表中,则需要额外的APPLY运算符:

SELECT *
INTO Data
FROM (VALUES
   (12.0, NULL, NULL, 5.0),
   (NULL, NULL, NULL, NULL),
   (1, 1, 1, 10.0)
) d (Col1, Col2, Col3, Col4)


SELECT *
FROM Data d
OUTER APPLY (
   SELECT AVG(Col) AS Col
   FROM (VALUES
      (d.Col1), (d.Col2), (d.Col3), (d.Col4)
   ) v (Col)   
) a

结果:

Col1  Col2 Col3 Col4 Col
-----------------------------
12.0  null null 5.0  8.500000
null  null null null null
1.0   1    1    10.0 3.250000


以上是计算SQL中忽略空值的4个数字的平均值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>