2017-06-14 7 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)/
nullif(sum(case WHEN aw.goalmet IN ('yes', 'no') then 1 else 0 end), 0) 
) 

あなたはこれを簡素化することができます:何も分母が一致しない場合、それはとにかくNULLなります

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

そして、あなたは本当に空想とシンプルになりたい場合は:全く必要

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

分周なし。

+0

ありがとうございます。解決済み! – Julie

関連する問題