2017-06-14 201 views
1

我試圖在case語句中劃分。我用nullif來控制除以零的錯誤。但是,我的回答總是爲0.我不確定我做錯了什麼。以下是聲明:劃分案例陳述和答案始終爲零

sum(CASE WHEN aw.goalmet LIKE 'yes' THEN 1 ELSE 0 end)/nullif(sum(case WHEN aw.goalmet IN ('yes', 'no') then 1 else 0 end),0) AS 'Total Passing AIMSWEB2' 

回答

1

您可能正在使用數據庫進行整數除法(因此1/2 = 0而不是0.5)。所以,只要使用非整數:如果沒有分母匹配

(sum(CASE WHEN aw.goalmet LIKE 'yes' THEN 1.0 ELSE 0 end)/
sum(case WHEN aw.goalmet IN ('yes', 'no') then 1 end) 
) 

,那麼這將是NULL反正:

(sum(CASE WHEN aw.goalmet LIKE 'yes' THEN 1.0 ELSE 0 end)/
nullif(sum(case WHEN aw.goalmet IN ('yes', 'no') then 1 else 0 end), 0) 
) 

您可以簡化這。

而且,如果你真的想成爲幻想和簡單:

avg(case when aw.goalmet = 'yes' then 1.0 
     when aw.goalmet = 'no' 
    end) 

沒有在所有需要的部門。

+0

非常感謝。解決了! – Julie