
TRANSFORMとPIVOTで簡単にクロス集計できる方法を話していこう。
クロス集計する準備
・テーブル名はpeople
| name | sex |
| satou | man |
| tanaka | woman |
| itou | man |
| suzuki | woman |
| mori | woman |
| satou | man |
性別ごとにクロス集計してみよう
TRANSFORM COUNT(sex)
SELECT name
FROM people
GROUP BY name
PIVOT sex IN ('man', 'woman')
説明するとつぎのような感じになる。
- SELECT句とGROUP BY句に「左側に表示したい列を」
- TRANSFORMのところに「集計したい列のCOUNTを」
- PIVOTに「集計したい列の項目を」
PIVOTにINで集計したい項目を順番に指定していけばOK。
項目に一致しない場合はNULLで出力される。
結果は下記のような感じだ。
| name | man | woman |
| itou | 1 | |
| mori | 1 | |
| satou | 2 | |
| suzuki | 1 | |
| tanaka | 1 |
まとめ: TRANSFORMとPIVOTで簡単にクロス集計しよう
説明した通りだが、TRANSFORMとPIVOTをつかえば短いSQL文で簡単にクロス集計ができるようになる。
分析もラクになるはずだからぜひ試してみよう。

