SQLでGROUP BYとPIVOTを組み合わせた処理の解説

この記事では、SQLにおける`GROUP BY`と`PIVOT`の組み合わせについて解説します。特に、何らかのデータ集合に対して、複数の属性を同時に集計する必要が出てきた場合に、これらのSQLの機能がどのように役立つのかを具体例と共に見ていきます。

目次

はじめに

データベース処理においては、よく集計処理が必要になります。SQLでは`GROUP BY`を用いて簡単に集計が可能です。また、`PIVOT`は行と列を逆転させる操作であり、これを`GROUP BY`と組み合わせることで、非常に多機能な集計処理が可能になります。

GROUP BYの基本

概念

`GROUP BY`句は、指定した列に基づいて行をグループ化し、それぞれのグループに対して集計関数を適用します。

SELECT department, COUNT(*) FROM employees
GROUP BY department;

具体例

departmentemployee
開発Taro
開発Hanako
営業Jiro
営業Sachiko
テーブル名称1: employeesテーブル

このテーブルに対して、以下のSQL文を実行します。

SELECT department, COUNT(*) FROM employees
GROUP BY department;
departmentCOUNT(*)
開発2
営業2
テーブル名称2: 集計結果

PIVOTの基本

概念

`PIVOT`は、行を列に変換するSQLの機能です。これにより、横方向にデータを展開できます。

具体例

departmentmonthsales
開発1月200
開発2月250
営業1月150
営業2月180
テーブル名称3: monthly_salesテーブル
SELECT *
FROM monthly_sales
PIVOT (SUM(sales) FOR month IN ('1月', '2月'));
department1月2月
開発200250
営業150180
テーブル名称4: PIVOT後のテーブル

GROUP BYとPIVOTの組み合わせ

目的と使用ケース

GROUP BYとPIVOTを組み合わせることで、より高度な集計が可能です。特に、多角的な視点からデータを解析する際に有用です。

具体例

SELECT *
FROM (
  SELECT department, month, sales FROM monthly_sales
)
PIVOT (
  SUM(sales)
  FOR month IN ('1月', '2月')
)
ORDER BY department;
department1月2月
開発200250
営業150180
テーブル名称5: GROUP BYとPIVOTを組み合わせた結果

まとめ

この記事では、SQLの`GROUP BY`と`PIVOT`を組み合わせた処理について詳しく解説しました。これらを理解し、適切に使用することで、多角的な視点からのデータ解析が容易になります。

コメント

コメントする

目次