Excelが大好きだ!

Excel大好き経理マンがExcelの事を書き綴っていきます。


スポンサードリンク

SQLでExcelの集計を簡単・楽しく - HAVING句

以前にデータの抽出条件を設定するWHERE句、
データ範囲に線引してグループ化するGROUP BY句を紹介しました。

www.excellovers.com
https://www.excellovers.com/entry/excelsql18www.excellovers.com

ではグループ化した後のデータに抽出条件を設定するにはどうしたら良いでしょうか?

そういう時はWHERE句ではなく、HAVING句を使用します。


HAVING句

HAVING句の構文は以下のとおりです。

select 列名 from テーブル名 group by 列名 having 条件式

HAVING句はGROUP BY句で集約されたデータに対して使用します。
つまりGROUP BY句とセットで使用します。

GROUP BY句で集約した後のデータに対してWHERE句を使用することはできません。

HAVING句の記載箇所はGROUP BY句の後になります。

HAVING句の条件式に記載できるのは下記のとおりです。

  • GROUP BY句で使用した列
  • 集約関数
  • 定数

www.excellovers.com


HAVING句使用例

HAVING句の前段階として下記のようなSQL文で集計しています。
この集計後のデータのうち、合計点が180以上のデータを抽出する場合。

GROUP BY句の後にHAVING句を記載して集約後のデータを対象に抽出判定を行います。

HAVING句の動作のイメージ

  1. GROUP BY句でデータに対して線を引いて範囲を区切る
  2. 学生ID毎の合計点(SUM関数)を算出。
  3. 学生ID毎の合計点が180以上(>= 180)か判定。
  4. 学生ID「100」と「300」が条件を満たしている。
  5. 学生ID「100」と「300」のSELECT文に指定したデータを表示   

HAVING句で指定した条件とSELECT文で表示するデータが一致している必要はありません。


次回からは関数を紹介していきます。


www.excellovers.com