0

私の職務の 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 の難読化されたテーブル定義を次に示します。

4

2 に答える 2

0

それを単に「恐ろしい」と呼ぶのは、あなたの機転と優しさの表れです。ありがとうございました。:) 私がこのスキーマを継承したのはつい最近のことです (これはもともと StrongMail の人々によって作成されたものです)。

今年の私のロードマップには、完全なリレーショナル DB の再構築プロジェクトがあります。サンプルの正規化は、私が取り組んできたものと非常に一致しています。realname に関する非常に興味深い洞察、私はそれについてあまり考えていませんでした。私は、StrongMail が壊れた唯一の理由は、名前の電子メールの個人化のためだったと思います。

MSO は複数のシステム オペレーター (ケーブル会社) です。私たちは大規模なライフスタイル メディア企業であり、私たちが作成するニュースレターは、食品、旅行、家庭、ガーデニングに関するものです。

私はこのために Fiddle を作成しています - 私はここに来たばかりなので、今後は皆さんが支援できるようにする必要があることにもっと気を配ります。ありがとうございました!

于 2013-07-09T17:46:37.200 に答える