コンテンツにスキップ

第6章 グループ化

6.1 グループ分けして集計

「GROUP BY 列名」と指定することで、その列の内容によって行をグループ分けし、そのグループごとに集計関数を使用することができる。

SELECT 集計関数(列名) FROM テーブル名 GROUP BY グループ分けする列名;

例:hiごとにグループ分けし、kosu の合計を計算。

SELECT hi,SUM(kosu) FROM uriage GROUP BY hi;
  • GROUP BY 指定時、SELECT で表示する列はGROUP BY で指定された列しか使えない(+集計関数)。
  • GROUP BY はWHEREの後、ORDER BYの前に記述
  • GROUP BY には複数の列を指定することが可能

6.2 集計結果に条件付け

集計結果に条件付けを行うには HAVING を用いる。

SELECT 関数(列名) FROM テーブル名 GROUP BY グループ分けする列名 HAVING 条件;

※条件はWHEREと同様の書き方

SELECT hi,SUM(kosu) from uriage GROUP BY hi HAVING SUM(kosu) > 5

hi によってグループ分けし、kosu の合計が5より大きいものを表示。

  • HAVING は GROUP BY の直後に書く

HAVING と WHERE の違い

  • WHERE :集計前に行を絞る
  • HAVING:集計後に行を絞る

処理の順番はWHERE → 集計 → HAVING

よって、集計関数をWHERE句に使うことは出来ないが、HAVING句に使うことは出来る。