プログラミング

PostgreSQLでFILTERをつかって件数を取得する方法

はじめ

PostgresSQでフラグごとの件数を1行で取得したいケースがあったのでFILTEを用いた書き方をメモ。

前提

PostgreSQL 9.4以上

ステータスが「1」のと「2」の件数を1行で取得する場合

SELECT
    -- 条件1: statusが'1'のものをカウント
    COUNT(*) FILTER (WHERE status = '1') AS s1_count,
    
    -- 条件2: statusが'2'のものをカウント
    COUNT(*) FILTER (WHERE status = '2') AS s2_count,
FROM
    table;

-プログラミング