SQLの集約関数とは、グループごとにデータを集約する際に非常に有用です。ただし、これらの集約データに対してさらにフィルタリングをかける必要が出てきた場合、どうすればよいでしょうか?その答えは、HAVING句を使用することです。この記事では、HAVING句を使用して集約データを効率よくフィルタリングする方法について、具体的なSQLクエリを交えながら解説します。
目次
HAVING句とは何か?
HAVING句は、SQLのSELECT文で使用され、GROUP BY句でグループ化されたデータに対して条件を指定するための機能です。WHERE句が個々のレコードに対する条件を設定するのに対し、HAVING句は集約データに対する条件を設定します。
基本的な構文
HAVING句の基本的な構文は以下の通りです。
SELECT 列名1, 列名2, ... , 集約関数(...)
FROM テーブル名
GROUP BY 列名1, 列名2, ...
HAVING 集約関数(...) 条件;
構文の各部分の説明
- SELECT文: データを選択する列と集約関数を指定します。
- FROM文: データを取得するテーブルを指定します。
- GROUP BY句: 集約する列を指定します。
- HAVING句: 集約データに適用する条件を指定します。
具体的な例
例として、以下のような「商品テーブル」があるとします。
商品ID | 商品名 | 価格 | カテゴリ |
---|---|---|---|
1 | りんご | 100 | フルーツ |
2 | バナナ | 120 | フルーツ |
3 | キャベツ | 80 | 野菜 |
4 | トマト | 90 | 野菜 |
このテーブルから、各カテゴリに属する商品の平均価格が100以上のカテゴリを取得したい場合、HAVING句を使用して以下のように書けます。
SELECT カテゴリ, AVG(価格)
FROM 商品テーブル
GROUP BY カテゴリ
HAVING AVG(価格) >= 100;
まとめ
HAVING句を使用することで、GROUP BY句で生成された集約データに対して、さらなる条件を加えてフィルタリングすることが可能です。これにより、より高度なデータ分析やレポート生成が容易になります。特に、ビジネスの現場では、HAVING句の使い方をマスターすることで、効率的なデータ抽出が行えるようになるでしょう。
created by Rinker
¥4,554
(2024/11/24 11:00:51時点 Amazon調べ-詳細)
コメント