見出し画像

BigQueryでPIVOT

PIVOT

縦持ちテーブルから横持テーブルへ
例えば下記図のような縦持ちテーブルがあるとします

上記を横持テーブルにすると下記図のようになります
縦持ち、横持ちの表現になれない方もいるかもしれませんが
これはExcelでいうところのピポッドテーブルのそれですね。

PIVOTのわかりやすい説明サイトはコチラ

サンプルSQL

SELECT
num_year,q_1,q_2,q_3,q_4,
FROM
(
SELECT
num_year,
CONCAT("q_",num_quarter) AS q_num,
SUM(revenue) AS sum_rev,
FROM
(
SELECT
revenue,
EXTRACT(YEAR FROM date_time) AS num_year,
EXTRACT(QUARTER FROM date_time) AS num_quarter,
FROM sales
)
GROUP BY 1,2
)
PIVOT (
    MAX(sum_rev)
    FOR q_num IN ("q_1","q_2","q_3","q_4")
)

おまけ

quarterごとの増減をSIGN関数を使って判定する

SIGN関数はvalueが正の値か、負の値かを判断し
正の値の場合は1、0の場合は0、負の値の場合は-1
を返します

ここから先は

1,263字

¥ 100

この記事が気に入ったらサポートをしてみませんか?