ア: THEN 1 ELSE -1 誤り。COUNT 関数は NULL 以外のすべての値をカウントするため、この構造では条件を満たさない場合のカウントが正確に処理されません。
イ: THEN 1 ELSE 0 誤り。COUNT は 0 もカウント対象に含めるため、条件を満たさない場合もカウントされてしまいます。
ウ: THEN 1 ELSE NULL 正しい。条件を満たさない場合に NULL を返すことで、COUNT 関数がその値を無視し、正確な集計が可能になります。
エ: THEN NULL ELSE 1 誤り。条件を満たした場合に NULL を返してしまうため、集計結果が正しくなりません。
正しいSQL文:
SELECT 部署コード,
COUNT(CASE WHEN 役職 = '主任' THEN 1 ELSE NULL END) AS 主任の人数,
COUNT(CASE WHEN 役職 = '一般社員' THEN 1 ELSE NULL END) AS 一般社員の人数
FROM 社員
GROUP BY 部署コード;