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文で簡単にクロス集計ができるようになる。
分析もラクになるはずだからぜひ試してみよう。