TSQL - 列中所有非零值的平均值

Posted

技术标签:

【中文标题】TSQL - 列中所有非零值的平均值【英文标题】:TSQL - Average of all values in a column that are not zero 【发布时间】:2011-06-12 17:07:25 【问题描述】:

我正在编写报告,并希望获得年龄列的平均值。问题是并非所有行都有年龄。

如果列的值为 0 2 4,我希望返回 3,而不是 2。我不能简单地用 WHERE 排除零行,因为我正在使用这些行中的其他列。有没有 AvgIfNotZero 类型的函数?

【问题讨论】:

【参考方案1】:
SELECT

    AVG (CASE WHEN Value <> 0 THEN Value ELSE NULL END)
    ....

AVG 不会考虑 NULL 值。或者这个

    AVG (NULLIF(Value, 0))

【讨论】:

【参考方案2】:

, ( 从

中选择 AVG(a)
        (
        SELECT NULLIF([Column1], 0)
            UNION ALL
        SELECT  NULLIF([Column2], 0)
            UNION ALL
        SELECT  NULLIF([Column3], 0)
            UNION ALL
        SELECT  NULLIF([Column4], 0)
        ) T (a)
    ) AS [4 Column Average]

【讨论】:

您应该为答案提供更多上下文,而不是仅仅删除 OP 或未来读者可能不理解的代码块。

以上是关于TSQL - 列中所有非零值的平均值的主要内容,如果未能解决你的问题,请参考以下文章

使用最后 n 个值的平均值或中值填充数据框不同列中的缺失值

计算R中列中NA的前后值的平均值

如何计算另一列中特定值的列的平均值?

如何计算sql中包含非零值的行

计算MySQL列中不同值的移动平均值

一种循环冗余校验算法,它对具有特定非零值的尾随字节数不变