【スプレッドシート】QUERY関数のPIVOT句でクロス集計!基本から応用まで解説

GoogleスプレッドシートのQUERY関数を使うと、大量のデータから必要な情報だけを抽出したり、並べ替えたり、集計したりと、さまざまなデータ操作を行うことができます。この記事ではデータをクロス集計できる「PIVOT句」について解説しているので、ぜひ参考にしてみてください。

スポンサーリンク

PIVOT句の基本の使い方

【スプレッドシート】QUERY関数のPIVOT句でクロス集計!基本から応用まで解説

PIVOT句は基本的にGROUP BY句と組み合わせて使用し、データをクロス集計します。

例:B列(商品名など)を行、A列(店舗名など)を列にして、C列(売上)の合計をクロス集計
=QUERY(A1:C7,"SELECT B,SUM(C) GROUP BY B PIVOT A")

💡 ポイント:

SELECT句に指定した集計以外の列(例:B列)は、GROUP BY句にも記述する必要があります。

QUERY関数の引数:(データ, クエリ, [見出し])


【数式の解説】

  1. GROUP BY句(行にする列):B列を項目ごとにグループ化し、行項目とします。
  2. PIVOT句:(列にする列):A列を項目ごとにグループ化し、列項目とします。
  3. SELECT句(抽出する列):行項目のB列と、行項目と列項目が交差する部分に集計したC列の合計を返します。

👉 SELECT句の詳しい解説はこちら:「SELECT句の使い方!」

👉 GROUP BY句の詳しい解説はこちら:「GROUP BY句の使い方!」


📖 PIVOT句を単体で使用した場合の挙動:

PIVOT句だけを使用すると、指定した列でグループ化した集計結果が横1行で出力されます。

例:A列(店舗名など)を列にして、C列(売上)の合計だけを横1行で出力
=QUERY(A1:C7, "SELECT SUM(C) PIVOT A")

スポンサーリンク

複数の要素を組み合わせて集計する方法

行(縦軸)を複数階層にする

【スプレッドシート】QUERY関数のPIVOT句でクロス集計!基本から応用まで解説

多階層(月別 ➔ 商品別の売上など)の集計をしたい場合、GROUP BY句に列名をカンマで区切って指定します。

例:月(A列)と商品(C列)を行にし、店舗(B列)を列にして、売上(D列)の合計を集計
=QUERY(A1:D7, "SELECT MONTH(A)+1, C, SUM(D) GROUP BY MONTH(A), C PIVOT B")

💡 ポイント:

QUERY関数の MONTH() は、月を「0〜11(1月=0)」で返す仕様のため、正しく表示するにはSELECT句に MONTH(A)+1 と指定します。

列(横軸)を複数階層にする

【スプレッドシート】QUERY関数のPIVOT句でクロス集計!基本から応用まで解説

列見出しを多階層(店別 ➔ 月別の売上など)の集計をしたい場合、PIVOT句に列名をカンマで区切って指定します。

例:商品(C列)を行にし、店舗(B列)と月(A列)を組み合わせて列にして、売上(D列)の合計を集計
=QUERY(A1:D7, "SELECT C, SUM(D) GROUP BY C PIVOT B, MONTH(A)+1")

複数の集計関数を同時に使う

【スプレッドシート】QUERY関数のPIVOT句でクロス集計!基本から応用まで解説

「売上の合計」と「商品の個数」を同時に出したい場合は、集計関数をカンマ区切りで並べます。

例:B列(商品名)を行、A列(店舗名)を列にして、C列の「売上合計」とB列の「商品個数」を同時に集計
=QUERY(A1:C7, "SELECT B, SUM(C), COUNT(B) GROUP BY B PIVOT A")

スポンサーリンク

QUERY関数のその他のクエリ

今回はPIVOT句を中心に解説しましたが、QUERY関数で使えるクエリには、他にも以下のようなものがあります。

SELECT句:特定の列を指定した順序で抽出します。(詳細記事はこちら)

WHERE句:指定した条件を満たすデータのみを抽出します。(詳細記事はこちら)

GROUP BY句:指定した列の同じ要素ごとにデータを集計します。(詳細記事はこちら)

PIVOT句:指定した列の値を横方向に展開し、クロス集計表を作成します。(この記事で解説)

ORDER BY句:データを特定の列の値で並べ替えます。(詳細記事はこちら)

LIMIT句:抽出する行数を指定した数に制限します。(詳細記事はこちら)

OFFSET句:指定した数の最初の行をスキップします。(詳細記事はこちら)

LABEL句:抽出した列のヘッダー名を任意の名前に変更します。(詳細記事はこちら)

FORMAT句:特定の列の日付や数値などの表示形式を設定します。(詳細記事はこちら)

OPTIONS句:ヘッダーの行数や特定の書式設定を適用しないなどの追加オプションを設定します。

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