トップページ >  Oracle SQL >  group by
初版2006/04/20: 最終更新日2006/04/20
  group by
目次
group by
group by
あるフィールド毎の集計をしたいといった場合、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