2016-10-10 3 views
0

У меня есть столбец, где я могу получить 0 значений, но мне нужно рассчитать среднее значение этого столбца, не считая эти 0 в качестве части разделителя.Сделать AVG() игнорировать 0?

У меня есть следующий запрос:

SELECT AVG(CAST(RATING AS NUMERIC(18, 2))) AS AVERAGE, 
     QUESTIONID, 
     Questions.SHORTVERSION, 
     COUNT(CASE 
       WHEN RATING > 0 
       THEN 1 
       ELSE NULL 
      END) AS COUNT 
FROM AnswersRating 
    INNER JOIN Questions ON Questions.ID = QUESTIONID 
WHERE SURVEYID IN 
(
    SELECT ID 
    FROM SURVEYS 
    WHERE FLIGHTDATAID = '8371' 
) 
GROUP BY QUESTIONID, 
     Questions.SHORTVERSION 
ORDER BY QUESTIONID; 

Я где-то читал, что я могу использовать NULLIF, чтобы помочь, но я не мог понять, как использовать его правильно. Кто может мне помочь?

+0

Вы можете использовать NULLIF. NULLIF (RATING, 0) – VDK

+2

вы не можете добавить 'где рейтинг> 0'? –

+0

Я согласен с @vkp, где your_col! = 0 – samirk433

ответ

2

Вы можете использовать NULLIF для преобразования 0s в качестве значения NULL AVG игнорирует NULLs:

NULLIF(RATING, 0) 
Смежные вопросы