【SQL】クロス集計をしよう!【PostgreSQL】

データベース

みなさんこんにちは、現役エンジニアのサメハックです

未経験からWebエンジニアに転職し、
現在正社員として5年働いたのちフリーランスとして独立しました。

SQLの解説シリーズです。

今回はクロス集計について学んでいきましょう!

駆け出しエンジニアや未経験の方、
また新入社員を指導する先輩社員にとっても
わかりやすいように解説していきます!

この記事を読むと・・・
  • クロス集計が実行できる

※本記事はPostgreSQLを想定して執筆しておりますが、他のDBでもある程度動作します

クロス集計をしよう!

クロス集計とは

クロス集計は、異なる要素を組み合わせてデータを整理する方法です。

例えばグループにおける男女数を集計したいときに
縦にグループ番号、横に男性・女性・合計というカラムを設定します。

このように集計することで、
グループ・性別という異なる要素を組み合わせたデータが取得できます。

クロス集計をしてみよう!

  • 横列:COUNTやSUMなどの集計関数
  • 縦列:GROUP BY

クロス集計をするにはこの2つの処理を実行する必要があります。

例えばこのようなユーザテーブルから
各グループにおける男女数を集計したいときには以下のSQLを実行します。

SELECT 
    my_table.group_id AS  グループ,
    COUNT(*) FILTER(WHERE my_table.gender = 'male') AS 男性,
    COUNT(*) FILTER(WHERE my_table.gender = 'female') AS 女性,
    COUNT(*) AS 合計
FROM my_table
GROUP BY my_table.group_id;
正しく集計することができたよ!

FILTER関数について復習したい方はこちらを参考にしてください。

【SQL】FILTER句を使って集計しよう!【PostgreSQL】

GROUP BYについて復習したい方はこちらを参考にしてください。

404 NOT FOUND – サメハック
Infomation for Engineer🦈

まとめ

  • クロス集計は、異なる要素を組み合わせてデータを整理する方法です。
  • 横列:COUNTやSUMなどの集計関数
  • 縦列:GROUP BY

満足いただけたら、1クリックなのでSNSフォローしてもらえると嬉しいです🦈

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