私の職務の 1 つは、大規模なニュースレター購読データベースのマイニングとマーケティングを担当することです。私のニュースレターにはそれぞれ 4 つの列があります (newsletter_status、newsletter_datejoined、newsletter_dateunsub、newsletter_unsubmid)。
これらのコラムに加えて、私たちのカスタマー サービス部門が作成したマスターの購読解除コラムもあります。すべてのメーリングからの削除を希望する怒っているサブスクライバーに対応するために更新できます。また、emailaddress_status と呼ばれるハード バウンス (または設定された数のソフト バウンス) が発生した場合に更新される別の列もあります。
1 つのリストの現在の有効なサブスクライバーの数を取得するときは、次の構文を使用します。
select count (*) from subscriber_db
WHERE (emailaddress_status = 'VALID' OR emailaddress_status IS NULL)
AND newsletter_status = 'Y'
and unsub = 'N' and newsletter_datejoined >= '2013-01-01';
私がしたいのは、%_status を持つすべての列を検索する 1 つのクエリであり、前述の基準が現在のカウント サイズで並べられています。
私はそれが次のように見えることを望みます:
等
似たようなものを探して何ヶ月もウェブを検索しましたが、ターミナルで実行して結果をエクスポートする以外は、1 つのクエリですべてを正常に取得できませんでした。
PostgreSQL 9.2.3 を実行しています。
適切なテストケースは、個々のクエリを実行したときに取得したカウントと一致する各集計合計です。
序数配置、column_type、char_limit、および is_nullable の難読化されたテーブル定義を次に示します。