2017-06-14 197 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