スポンサーリンク

【SQL】GROUP BYとHAVINGの使い方

記事内に広告が含まれています。
スポンサーリンク

GROUP BY句とは?

GROUP BY句は、データを特定の列の値に基づいてグループ化するために使用されます。

この句を使用することで、同じ値を持つ行を一つのグループとしてまとめ、そのグループごとに集計を行うことができます。

例えば、次のようなテーブルがあるとします。

| 顧客ID | 購入金額 | 商品カテゴリ |
|--------|----------|--------------|
| 1 | 1000 | 食品 |
| 2 | 2000 | 衣料品 |
| 1 | 1500 | 衣料品 |
| 3 | 500 | 食品 |
| 2 | 3000 | 食品 |

このデータをもとに、商品カテゴリごとの合計購入金額を求めたい場合、GROUP BY句を使用します。

SELECT 商品カテゴリ, SUM(購入金額) AS 合計購入金額
FROM 購入履歴
GROUP BY 商品カテゴリ;

結果は以下のようになります。

 商品カテゴリ | 合計購入金額 |
|--------------|--------------|
| 食品 | 4500 |
| 衣料品 | 3500 |
スポンサーリンク

HAVING句とは?

HAVING句は、GROUP BY句によってグループ化されたデータに対して、特定の条件を設定するために使用されます。

HAVING句はWHERE句と似ていますが、WHERE句が個々の行に対して条件を設定するのに対し、HAVING句はグループに対して条件を設定します。

例えば、上記の例で、合計購入金額が4,000円以上のカテゴリだけを表示したい場合、HAVING句を使用します。

SELECT 商品カテゴリ, SUM(購入金額) AS 合計購入金額
FROM 購入履歴
GROUP BY 商品カテゴリ
HAVING SUM(購入金額) >= 4000;

結果は以下のようになります。

| 商品カテゴリ | 合計購入金額 |
|--------------|--------------|
| 食品 | 4500 |

GROUP BYとHAVINGの組合せ

GROUP BYHAVINGを組み合わせることで、データのグループ化とそのグループごとの条件設定を同時に行うことができます。

これにより、特定の基準を満たすグループだけを効率的に抽出することができます。

例えば、各顧客の合計購入金額を求め、その合計が2000円以上の顧客だけを抽出するには、以下のSQLクエリを使用します。

SELECT 顧客ID, SUM(購入金額) AS 合計購入金額
FROM 購入履歴
GROUP BY 顧客ID
HAVING SUM(購入金額) >= 2000;

このクエリにより、2000円以上購入した顧客のリストを取得することができます。

まとめ

GROUP BY句とHAVING句は、SQLを使用してデータを集計し、特定の条件に合致するグループを抽出するために利用できます。

スポンサーリンク
SQL
著者SNS
タイトルとURLをコピーしました