とあるプログラマの備忘録

都内某所に住むプログラマが自分用に備忘録を残すという趣旨のブログです。はてなダイアリーから移動しました!

【mysql CASE】GROUP化したものを条件分岐で出す。

というかなんていうんですかね?これ。
まぁたとえば学校DBがあったとして以下のようなレコードがあったとします。

テーブル名:gakkou

name class sex
三鷹 1-1
一之瀬 1-1
四谷 1-1
六本木 1-1
五代 1-2 sex

ではクラスが1-1の男性の人数と女性の人数をだしてください。


って言われた時、2本SQL書けばいいんですけど、
CASEを使え場一本でできます。

    SELECT 
        SUM(CASE WHEN sex = '男' THEN 1 ELSE 0 END) as otoko,
        SUM(CASE WHEN sex = '女' THEN 1 ELSE 0 END) as onna
    FROM gakkou
        GROUP BY class
        HAVING class = '1-1';

たぶんこんな感じw(デバックしてませんw)