データベース内のサブスクライバーが最も多くの電子メールを開く時刻を見つけようとしています。
多数のサブスクライバーIDを含むテーブルがあり、送信されたEメールを格納するテーブルにマップされたEメール開始レコードを含む別のテーブルがあります。このテーブルは特定のサブスクライバーIDにマップされます。
したがって、私の基本的な要望は、各行が特定のサブスクライバー(サブスクライバーID)であり、最も多くの電子メールを開いた時間であるテーブル出力を取得することです。したがって、最初に各サブスクライバーIDを調べてから、一時テーブルを作成する必要があります。各行は、その時間に開いた電子メールの数に関連付けられた異なる時間です。次に、[最大]を選択して、その一時テーブルから最大行を取得する必要があります。次に、それを出力テーブルに配置し、次のサブスクライバーに対して繰り返す必要があります。
私が気にするのは時間です。私は月、年、時間を気にしません。人々が主にメールを開く時間帯を知りたいだけです。
私はCTEとwhileループを使用して試行錯誤してきましたが、役に立ちませんでした。どんな助けでも大歓迎です。
(最小化された)構造は次のとおりです。
表:サブスクライバー
| サブスクライバーID| last_name | first_name |
| 9999999999 | スミス| ジョン|
テーブル:SentEmail
| message_id | サブスクライバーID|
| 9028340 | 9999999999 |
表:OpenEmails
| open_id | message_id | dtopened |
| 9923489 | 9028340 | '2011-11-22 15:53:02.157' |
私の目標は、次のような出力テーブル(最後の列は不要)で、各subscriber_idはリスト内で一意です。
| サブスクライバーID| OpenHour | NumOpens |
| 999999999 | 10 | 32 |