[SQL]CASE式

MySQL

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;

コメント

タイトルとURLをコピーしました