2016-10-10 65 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

你不可以添加'where rating> 0'吗? –

+0

我同意@vkp,其中your_col!= 0 – samirk433

回答

2

您可以使用NULLIF您0转换为空值作为AVG将忽略空值:

NULLIF(RATING, 0)