SQLでGroup byを利用する方法

データベース,SQL データベース
データベース

この記事では、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 句の使い方を正しく理解し、実際のビジネスデータに活用してください。

タイトルとURLをコピーしました