TSQL — среднее значение всех значений в столбце, которые не равны нулю

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

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


person Justin808    schedule 20.01.2011    source источник


Ответы (2)


SELECT

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

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

    AVG (NULLIF(Value, 0))
person gbn    schedule 20.01.2011

, ( ВЫБЕРИТЕ СРЕДНЕЕ(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]
person Milo Woodward    schedule 08.03.2018
comment
Вы должны дать больше контекста ответу, а не просто отбрасывать блок кода, который ОП или будущие читатели могут не понять. - person zgue; 08.03.2018