TSQL - среднее всех значений в столбце, которые не равны нулю - PullRequest
19 голосов
/ 20 января 2011

Я пишу отчет и ищу среднее значение для столбца возраста.Проблема заключается в том, что не все строки имеют возраст.

Если значения для столбца равны 0 2 4, я бы хотел вернуть 3, а не 2. Я не могу просто исключить нулевые строки с ГДЕ, как ям, используя другие столбцы в этих строках.Существует ли такая функция, как тип функции AvgIfNotZero?

Ответы [ 2 ]

41 голосов
/ 20 января 2011
SELECT

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

AVG не будет учитывать значения NULL. Или это

    AVG (NULLIF(Value, 0))
0 голосов
/ 08 марта 2018

, (ВЫБЕРИТЕ 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]
...