COUNT関数を使わずに条件付のカウントをする

商品が登録されたテーブルを利用して、各項目の条件ごとに件数をカウントしたいことがある。

例えばこんなテーブル

namecolorsizeprice
Aredbig100
Bbluesmall50
Credbig100
Dyellowbig200
Ebluesmall50
Fredsmall50

今までは

SELECT COUNT(name),COUNT(color),COUNT(size),COUNT(price) FROM product WHERE color = ‘red’;

こんな感じで書いていた。この指定だと、WEHERには一つの条件しか書けない。複数の条件を指定したいときにはちょっと不便だった。専門書を見ていて次のように書けることを覚えたので記録。

SELECT SUM (color=’red’) AS Red
           ,SUM (size=’big’)    AS Big
          ,SUM (1)              AS Total
    FROM product;

このように指定すると複数の集計条件を設定できる。この例はMySQLでのみ動作する。
Sum(1)と指定するとすべての行数を取得することができる。割合計算に使える。