あるフィールド毎の集計をしたいといった場合、group byを使用します。
group byはwhere句の後ろで指定します。書式は、
select フィールド名
from テーブル名
where 検索条件
group by グループ化したいフィールド(複数フィールド指定可)
;
というようになります。
ここで注意しなくてはいけないのは、select句のフィールドは集計関数又はgroup byで指定したフィールドしか指定できないという点です。
以下のSQLは、受注テーブルについてのSQLです。取引先は'DAIEI'で、itm毎の登録件数をcount(*)で表示します。
select count(*),itm
from juchu_tbl
where torihiki_saki = 'DAIEI'
group by itm;
select句のitmはgroup byで指定してますのでselect句に指定できます。またcount(*)は集計関数なのでselect句で指定できます。
このSQLの結果は以下のようになります。
count(*) itm
-------- -------
8 TV
11 video
10 radio
6 air-con
2 mirror
これでitm毎の登録件数を抽出することができましたが、さらにこの結果に対して、条件を指定することができます。
having 句を使用します。having句は、group byの後ろで指定します。
以下のSQLは、登録件数が10未満のみを表示します。条件はhaving句で指定します。
select count(*),itm
from juchu_tbl
where torihiki_saki = 'DAIEI'
group by itm
having count(*) 10;
結果は以下のようになります。
count(*) itm
-------- -------
8 TV
6 air-con
2 mirror