SQLのTRANSFORMとPIVOTで簡単にクロス集計しようぜ

TRANSFORMとPIVOTで簡単にクロス集計できる方法を話していこう。

クロス集計する準備

・テーブル名はpeople

namesex
satouman
tanakawoman
itouman
suzukiwoman
moriwoman
satouman

性別ごとにクロス集計してみよう

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で出力される。

結果は下記のような感じだ。

namemanwoman
itou1
mori1
satou2
suzuki1
tanaka1

まとめ: TRANSFORMとPIVOTで簡単にクロス集計しよう

説明した通りだが、TRANSFORMとPIVOTをつかえば短いSQL文で簡単にクロス集計ができるようになる。

分析もラクになるはずだからぜひ試してみよう。