この記事では、SQLのGROUP BYとHAVINGを用いたデータの集約とフィルタリングについて詳しく解説します。これらのSQL文はデータベースから情報を取り出し、整理する際に非常に有用です。具体的な使用例とともに、その使い方と注意点を解説します。
目次
GROUP BYの基本
GROUP BY句は、選択されたカラムに基づいて行をグループ化するのに使用されます。例えば、あるテーブルに商品のカテゴリと価格が格納されている場合、各カテゴリの平均価格を計算することができます。
基本的な使い方
GROUP BY句は、通常SELECT文の最後に位置します。以下のSQLコードは、”商品テーブル”から各カテゴリに属する商品の平均価格を計算する例です。
SELECT カテゴリ, AVG(価格)
FROM 商品テーブル
GROUP BY カテゴリ;
カテゴリ | 平均価格 |
---|---|
食品 | 300 |
家電 | 2000 |
複数カラムでのグループ化
複数のカラムでグループ化する場合、カラム名をコンマで区切ります。
SELECT カテゴリ, ブランド, AVG(価格)
FROM 商品テーブル
GROUP BY カテゴリ, ブランド;
HAVINGの基本
HAVING句は、GROUP BY句で行をグループ化した後に、その結果に対して条件を適用します。WHERE句とは異なり、HAVING句は集約関数に対して条件を指定できます。
基本的な使い方
HAVING句は、GROUP BY句の後に位置します。以下のSQLコードは、各カテゴリで平均価格が1000以上のものだけを抽出する例です。
SELECT カテゴリ, AVG(価格)
FROM 商品テーブル
GROUP BY カテゴリ
HAVING AVG(価格) >= 1000;
カテゴリ | 平均価格 |
---|---|
家電 | 2000 |
家具 | 1500 |
HAVINGとWHEREの違い
WHERE句は行をフィルタリングする前の条件を指定しますが、HAVING句は行をグループ化した後に条件を適用します。そのため、HAVING句は集約関数を使った条件指定が可能です。
まとめ
GROUP BY句とHAVING句は、SQLでデータを効率よく集約、フィルタリングするための重要なツールです。GROUP BY句でデータをまとめた後、HAVING句で特定の条件に一致するデータのみを抽出できます。これらを使いこなすことで、より複雑なデータ解析が可能になります。
created by Rinker
¥4,554
(2024/09/08 04:25:02時点 Amazon調べ-詳細)
コメント