我正在尝试使用 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 字段并不理想,但我没有构建它!