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

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

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

【问题讨论】:

    标签: tsql average


    【解决方案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 或未来读者可能不理解的代码块。
      猜你喜欢
      • 2018-04-21
      • 2017-05-26
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多