SQLでGROUP BY句をマスターする方法

この記事では、SQLのGROUP BY句の使い方について詳しく解説します。GROUP BY句は、データベースから取得したデータを特定の列に基づいてグループ化する際に使用されます。具体的なコード例、その解説、データテーブルを用いた演習問題とその回答を含めています。

目次

GROUP BY句とは?

GROUP BY句は、SQLクエリで使用される構文の一つです。この句を使用すると、指定した列の値に基づいてデータをグループ化することができます。例えば、売上データがあり、それを「商品カテゴリ」ごとに合計するようなケースでよく使用されます。

基本的な使い方

基本的な使い方は非常にシンプルです。以下は、商品カテゴリごとに売上合計を計算する簡単な例です。

-- 商品カテゴリごとに売上を合計する
SELECT product_category, SUM(sales_amount)
FROM sales
GROUP BY product_category;

GROUP BY句の高度な使い方

GROUP BY句は、単純なグループ化だけでなく、複数列に基づくグループ化や条件付きのグループ化も可能です。

複数列によるグループ化

複数の列を指定することで、より細かくデータをグループ化することができます。

-- 商品カテゴリと販売日ごとに売上を合計する
SELECT product_category, sales_date, SUM(sales_amount)
FROM sales
GROUP BY product_category, sales_date;

HAVING句との組み合わせ

HAVING句を使うと、GROUP BYでグループ化した後にさらに条件を指定してフィルタリングすることができます。

-- 売上合計が1000以上の商品カテゴリだけを抽出
SELECT product_category, SUM(sales_amount)
FROM sales
GROUP BY product_category
HAVING SUM(sales_amount) >= 1000;

演習問題とその回答

以下のテーブルを用いて、練習問題を解いてみましょう。

IDproduct_categorysales_datesales_amount
1食品2021-01-01500
2家電2021-01-022000
salesテーブル

問題

1. 「食品」カテゴリの売上合計を計算してください。
2. 2021年1月1日の売上合計を計算してください。

-- 問題1の回答
SELECT product_category, SUM(sales_amount)
FROM sales
WHERE product_category = '食品'
GROUP BY product_category;

-- 問題2の回答
SELECT sales_date, SUM(sales_amount)
FROM sales
WHERE sales_date = '2021-01-01'
GROUP BY sales_date;

解説

1. WHERE句を使って「食品」カテゴリをフィルタリングし、その後でGROUP BY句を使って売上を合計しています。
2. WHERE句で2021年1月1日をフィルタリングし、GROUP BY句で売上を合計しています。

まとめ

GROUP BY句は、特定の列に基づいてデータをグループ化する非常に便利な機能です。基本的な使い方から高度な使い方まで、多くのケースで活用することができます。この記事を参考に、是非ともGROUP BY句の使い方をマスターしてください。

コメント

コメントする

目次