この記事では、SQLの Group by
句を利用する方法について解説します。
Group by
句は、データベース内のデータを特定の列に基づいてグループ化し、集計関数と組み合わせることで集計処理を行う際に非常に役立ちます。
具体的な例と共に、その実装方法や注意点について説明します。
Group by句とは?
Group by
句は、SQLでデータをグループ化して集計を行うために使用されます。
例えば、売上データを日付ごとに集計したい場合などに便利です。
このセクションでは、Group by
の基本的な使い方を学びます。
Group by句の基本的な構文
Group by
句の基本的な構文は次の通りです。
SELECT
列名, 集計関数
FROM
テーブル名
GROUP BY
列名;
こで、集計関数は SUM()
や COUNT()
など、集計処理を行うための関数です。
GROUP BY
句に指定された列を基にデータがグループ化されます。
実際のSQLサンプルコード
次に、具体的な例を見てみましょう。
以下は、ある店舗の売上データを日付ごとに集計する例です。
CREATE TABLE sales (
sale_date DATE,
item VARCHAR(50),
quantity INT,
price DECIMAL(10, 2)
);
INSERT INTO sales (sale_date, item, quantity, price) VALUES
('2023-10-01', 'apple', 3, 150),
('2023-10-01', 'banana', 2, 100),
('2023-10-02', 'apple', 1, 150),
('2023-10-02', 'banana', 3, 100),
('2023-10-03', 'apple', 2, 150);
SELECT
sale_date,
SUM(quantity) AS total_quantity,
SUM(price * quantity) AS total_sales
FROM
sales
GROUP BY
sale_date;
このクエリでは、sale_date
列ごとに売上データをグループ化し、各日付の合計販売数量と合計売上を集計しています。
Group by句と集計関数
Group by
句は、集計関数と一緒に使用されることが多く、特定のデータを要約するために役立ちます。
主な集計関数には SUM()
、COUNT()
、AVG()
、MAX()
、MIN()
などがあります。
SUM() 関数との組み合わせ
SUM()
関数は、指定した列の数値の合計を計算します。
たとえば、商品ごとの売上合計を計算するには次のようにします。
SELECT
item,
SUM(price * quantity) AS total_sales
FROM
sales
GROUP BY
item;
COUNT() 関数との組み合わせ
COUNT()
関数は、指定した列に含まれる行の数を数えます。
商品の種類ごとに販売された回数を数えるには次のようにします。
SELECT
item,
COUNT(*) AS sale_count
FROM
sales
GROUP BY
item;
Group by句とHaving句
通常、WHERE
句は集計処理の前にフィルタリングを行いますが、HAVING
句は集計後の結果に対して条件を付けるために使用されます。
HAVING句の使用例
例えば、総売上が500を超える商品のみを表示したい場合、HAVING
句を使って次のように条件を設定します。
SELECT
item,
SUM(price * quantity) AS total_sales
FROM
sales
GROUP BY
item
HAVING SUM(price * quantity) > 500;
Group by句の使用上の注意点
Group by
句を使用する際には、いくつかの注意点があります。
特に、SELECT
句で指定する列は、GROUP BY
句に指定する列か、集計関数を使った列でなければなりません。
これを守らないとエラーになります。
エラー例
例えば、次のクエリはエラーになります。
SELECT
sale_date,
item, SUM(quantity)
FROM
sales
GROUP BY
sale_date;
この場合、item
列が GROUP BY
句に含まれていないため、集計関数が適用されない列としてエラーになります。
まとめ
この記事では、SQLの Group by
句の基本的な使い方から応用までを解説しました。
Group by
句を使用することで、データベース内のデータを効果的にグループ化し、集計処理を行うことができます。
また、HAVING
句を使って集計後のデータに条件を付けることも可能です。
SQLの集計処理を行う際には、Group by
句の使い方を正しく理解し、実際のビジネスデータに活用してください。