3.3 「GROUP BY」句と「HAVING」句

「GROUP BY」句でグループ化したデータに対して、条件を指定してデータを絞り込む際に使用する「HAVING」句について説明します。

3.3.1 「HAVING」句の使い方

「HAVING」句の使い方は、「WHERE」句に似ていますが、SQLでは「WHERE」句の中で集計関数を使えないルールになっていますので、 そのような場合は「HAVING」句を使用します。「HAVING」句の基本的な書式は下記のようになります。

   SELECT グループ化キー,集計関数(列名) FROM テーブル名 GROUP BY グループ化キー
   HAVING 集計関数(列名) 演算子 条件;

例えば「orderinfo」で、ISBN番号ごとの注文数の合計を出し、このうち注文数が10以上のデータを抽出する場合を考えてみます。DML文は下記のようになります。

   SELECT isbn,SUM(quantity) FROM orderinfo GROUP BY isbn HAVING SUM(quantity) >=10;

「HAVING」句では、下記の図のように、一旦集計されたデータを基に抽出条件が評価されます。