SQLにおけるデータの操作と抽出にはさまざまな方法がありますが、特に集計関数と組み合わせて使用される「HAVING句」と「GROUP BY句」は非常に強力です。これらを使うことで、グループ化されたデータに対して特定の条件でフィルタリングを行うことができます。本記事では、HAVING句とGROUP BY句を用いて特定の条件を満たすデータのみをフィルタリングする具体的な方法について解説します。
目次
基本的な概念の確認
まず、HAVING句とGROUP BY句について基本的な概念を確認します。
GROUP BY句とは
GROUP BY句は、指定したカラムに基づいてデータをグループ化するSQLの機能です。
HAVING句とは
HAVING句は、GROUP BY句でグループ化された後のデータに対して、特定の条件を設定してフィルタリングを行うSQLの機能です。
HAVING句の基本的な使い方
HAVING句の基本的な使い方を解説します。ここでは以下のような仮想のテーブル「商品テーブル」を例にします。
商品ID | 商品名 | 価格 | カテゴリ |
---|---|---|---|
1 | りんご | 100 | フルーツ |
2 | バナナ | 150 | フルーツ |
3 | 肉 | 300 | 食品 |
基本的なクエリの書き方
基本的なクエリの書き方は以下のようになります。
SELECT カラム名, 集計関数(カラム名)
FROM テーブル名
GROUP BY グループ化するカラム名
HAVING 集計関数(カラム名) 条件
例えば、カテゴリごとに平均価格が200以上の商品を抽出する場合、次のようなクエリになります。
SELECT カテゴリ, AVG(価格)
FROM 商品テーブル
GROUP BY カテゴリ
HAVING AVG(価格) >= 200
具体的な使用例
HAVING句を使用する際の具体的な例をいくつか見てみましょう。
ケース1: カテゴリごとの最低価格が100以上の商品を抽出
この場合のクエリは以下のようになります。
SELECT カテゴリ, MIN(価格)
FROM 商品テーブル
GROUP BY カテゴリ
HAVING MIN(価格) >= 100
ケース2: カテゴリごとの商品数が2以上のカテゴリを抽出
この場合のクエリは以下のようになります。
SELECT カテゴリ, COUNT(*)
FROM 商品テーブル
GROUP BY カテゴリ
HAVING COUNT(*) >= 2
まとめ
HAVING句とGROUP BY句を使うことで、SQLの集計機能を高度に活用できます。具体的なケースに応じて、この二つの句を組み合わせることで、より効率的なデータ分析が可能になります。特に、大量のデータを扱う場合には、このような高度なフィルタリングが非常に役立ちます。
created by Rinker
¥4,554
(2024/11/22 10:55:01時点 Amazon調べ-詳細)
コメント