SQLでGROUP BYとHAVINGを使ったデータの集約とフィルタリングの方法

この記事では、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
平均価格が1000以上のカテゴリ

HAVINGとWHEREの違い

WHERE句は行をフィルタリングする前の条件を指定しますが、HAVING句は行をグループ化した後に条件を適用します。そのため、HAVING句は集約関数を使った条件指定が可能です。

まとめ

GROUP BY句とHAVING句は、SQLでデータを効率よく集約、フィルタリングするための重要なツールです。GROUP BY句でデータをまとめた後、HAVING句で特定の条件に一致するデータのみを抽出できます。これらを使いこなすことで、より複雑なデータ解析が可能になります。

コメント

コメントする

目次