SQLをちょっと勉強しても現場のSQLを見ると知らないことが沢山ある。
SQLに限ったことじゃないけど笑
その中でもSQLにもあったんだー、便利だなーと思ったCASE式をご紹介
//単純CASE式
CASE gender WHEN '1' THEN 'man' WHEN '2' THEN 'woman' ELSE 'other' END
//検索CASE式
CASE WHEN gender='1' THEN 'man' WHEN gender='2' THEN 'woman' ELSE 'other' END
同じ動きします。
また、条件が真になるWHEN句がくるとそれ以降のWHEN句はスルーされるので注意(breakする感じ)。
例えば部署ごとの男女の人数の合計を求める時は、、
//男性の人数
SELECT dept_id, COUNT(*) FROM employees WHERE gender='1' GROUP BY dept_id;
//女性の人数
SELECT dept_id, COUNT(*) FROM employees WHERE gender='2' GROUP BY dept_id;
こんな感じで2回SQLを使う感じですが、CASE式を使ってやると一つにできます。
SELECT dept_id, SUM(CASE WHEN gender='1' THEN 1 ELSE 0 END), SUM(CASE WHEN GENDER='2' THEN 1 ELSE 0 END) FROM employees GROUP BY dept_id;
コメント