MSSQL Express 2005を使用して、日付範囲内に受信した電子メールの数を取得しようとしています。それだけ管理しましたが、データをそれを使用して行われたものに分割したいと思います。
これが私がこれまでに得たものです:
SELECT EmailAddress, COUNT(EmailAddress)
FROM mails
WHERE ReceivedTime >= DATEADD(DAY, -7, GETDATE())
GROUP BY EmailAddress
HAVING COUNT(EmailAddress) > 10
先週10回以上メールを送信したアドレスのリストが表示されますが、メールで何が起こったのかを示す別の列があります。私はこのようなことを達成しようとしています:
SELECT EmailAddress,
COUNT(ActionTaken WHERE ActionTaken="Deleted") AS Deleted,
COUNT(ActionTaken WHERE ActionTaken="Replied") AS Replied,
COUNT(ActionTaken WHERE ActionTaken="Read") AS Read,
COUNT(EmailAddress) AS Total
FROM mails
WHERE ReceivedTime >= DATEADD(DAY, -7, GETDATE())
GROUP BY EmailAddress
HAVING COUNT(EmailAddress) > 10
私はこれらの線に沿った結果セットを探しています:
EmailAddress | Deleted | Replied | Read | Total
---------------------------------------------------
user1@domain.com | 4 | 5 | 3 | 12
user2@domain.com | 2 | 6 | 3 | 11
OVER(PARTITION BY)句の使用と関係があると確信していますが、壁にぶつかりました。ActionTakenフィールドは理想的ではないことに気づきましたが、私はそれを構築しませんでした。