【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)