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

データベース

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

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

1分で理解できるSQLの解説シリーズです。

今回はFILTER句を使って集計する方法について学んでいきましょう!

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

この記事を読むと・・・
  • FILTER句を使って集計ができる

※本記事はPostgreSQLを想定して執筆しております

FILTER句を使おう

FILTER句とは

FILTER句は、集約関数(例: COUNT、SUM)と組み合わせて使用されます。
集約関数の結果を特定の条件でフィルタリングすることで
条件に合致するレコードの件数を取得することができます。

簡単に言うと条件を満たすデータの数を数えることができるよ!

FILTER句を使用する構文

SELECT COUNT(*) FILTER (WHERE 検索条件) AS 別名
条件はWHERE句で指定するよ!

使用例

  • ユーザ管理テーブルのgenderがmaleの数
  • ユーザ管理テーブルのgenderがfemaleの数

上記の条件で集計するSQL文です。

SELECT 
    COUNT(*) FILTER(WHERE user_table.gender = 'male') AS 男性,
    COUNT(*) FILTER(WHERE user_table.gender = 'female') AS 女性
FROM user_table;

実行結果

{"男性": 100, "女性":75}
【ポイント1】
文字列を指定する場合は必ずシングルクオーテーションで囲ってね!
ダブルクオーテーションはNGだよ!

【ポイント2】
syntax error at or near “FROM”
と表示される場合、2つ目のCOUNT文の文末にカンマが入っていないか確認してね!

まとめ

  • FILTER句とは、条件を満たすデータの数を集計すること

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

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