我试图在一个案例陈述中进行划分。我使用 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'
我试图在一个案例陈述中进行划分。我使用 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/2 = 0 而不是 0.5)。因此,只需使用非整数:
(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)
)
您可以将其简化为:
(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
无论如何都会如此。
而且,如果你真的想变得花哨和简单:
avg(case when aw.goalmet = 'yes' then 1.0
when aw.goalmet = 'no'
end)
根本不需要分工。