GROUP BY句とHAVING句の使い方
【データの集計とグループ化】
前回の記事では、WHERE句とJOIN句を使ってデータを絞り込んだり、複数のテーブルを結合する方法を学びました。
今回は、データをグループ化し、集計を行うためのGROUP BY句と、集計後に条件を設定するためのHAVING句に
ついて解説します。
1.GROUP BY句とは?
GROUP BY句は、データを特定の列でグループ化し、そのグループごとに集計を行うために使用されます。
例えば、以下のような「売上」テーブルがあるとします。
売上テーブル
id | 商品名 | 個数 | 価格 |
---|---|---|---|
1 | ペン | 10 | 100 |
2 | ノート | 5 | 200 |
3 | ペン | 7 | 100 |
4 | 消しゴム | 2 | 50 |
5 | ノート | 3 | 200 |
このテーブルで、商品ごとの合計売上個数を計算したい場合、GROUP BY句を使用します。
SELECT 商品名, SUM(個数) AS 合計個数
FROM 売上
GROUP BY 商品名;
このクエリの結果は以下のようになります。
商品名 | 合計個数 |
---|---|
ペン | 17 |
ノート | 8 |
消しゴム | 2 |
2.集計関数の紹介(COUNT, SUM, AVG, MAX, MIN)
SQLには、グループ化されたデータに対してさまざまな集計を行う関数があります。主な集計関数は以下の通りです。
- COUNT(): グループ内の行数をカウントします。
- SUM(): グループ内の値を合計します。
- AVG(): グループ内の平均値を計算します。
- MAX(): グループ内の最大値を取得します。
- MIN(): グループ内の最小値を取得します。
例えば、商品ごとの売上金額の平均を求めたい場合、**AVG()**関数を使用します。
SELECT 商品名, AVG(価格) AS 平均価格
FROM 売上
GROUP BY 商品名;
結果は以下のようになります。
商品名 | 平均価格 |
---|---|
ペン | 100 |
ノート | 200 |
消しゴム | 50 |
3.HAVING句とは?
HAVING句は、GROUP BY句でグループ化した後に、集計結果に条件を付けるために使用されます。
HAVING句は、WHERE句と似ていますが、WHERE句はグループ化前のデータに対して条件を設定し、
HAVING句はグループ化後のデータに対して条件を設定します。
例えば、商品ごとの売上個数が10個以上の商品のみを表示したい場合、HAVING句を使います。
SELECT 商品名, SUM(個数) AS 合計個数
FROM 売上
GROUP BY 商品名
HAVING SUM(個数) >= 10;
結果は以下のようになります。
商品名 | 合計個数 |
---|---|
ペン | 17 |
4.GROUP BY句とHAVING句の使い方
GROUP BY句とHAVING句を組み合わせて、より複雑な集計と条件指定が可能になります。
例えば、価格の合計が500以上となる商品グループを表示したい場合は、次のように書きます。
SELECT 商品名, SUM(価格 * 個数) AS 合計売上
FROM 売上
GROUP BY 商品名
HAVING SUM(価格 * 個数) >= 500;
結果は以下のようになります。
商品名 | 合計売上 |
---|---|
ペン | 1700 |
ノート | 1600 |
5.まとめ
今回の記事では、SQLのGROUP BY句とHAVING句を使ったデータのグループ化と集計方法について解説しました。
これらを使うことで、より高度なデータ集計や分析が可能になります。
SQLの集計機能は、特にデータ分析やレポート作成の際に非常に有効です。
コメント