目前,我正在获取数据库中唯一电子邮件地址的计数。
Table1
---------------------------------------------
id email name date_applied
---------------------------------------------
1 abc@mail.com ABC 2013-04-17
2 bcd@mail.com BCD 2013-04-18
3 xyz@mail.com XYZ 2013-04-20
4 tre@mail.com TRE 2013-04-28
5 esf@mail.com ESF 2013-04-29
6 bcd@mail.com BCD 2013-04-29
7 abc@mail.com ABC 2013-04-30
---------------------------------------------以下是关于我如何获得本周的独特电子邮件的查询:
select count(distinct(`A`.`email`)) as total
from Table1 as A
where A.date_applied BETWEEN `2013-04-29` and `2013-05-05`
Current Week: 2013-04-29 => 2013-05-05我想要实现的是在不忽略前几周的电子邮件的情况下,获得本周的新电子邮件的数量。
我非常需要你的帮助。
发布于 2013-05-07 13:35:37
您可以通过使用子查询来实现这一点,如下所示:
SELECT COUNT(DISTINCT `email`) AS Total FROM Table1 AS A
WHERE A.date_applied
BETWEEN '2013-04-29' AND '2013-05-05'
AND A.email NOT IN (SELECT email FROM Table1
WHERE date_applied < '2013-04-29');结果:
| TOTAL |
---------
| 1 |请参阅this SQLFiddle
以下是查询的描述:
首先,你需要在两个日期(即一周)之间收到邮件,如下所示:
SELECT DISTINCT email FROM Table1
WHERE date_applied BETWEEN '2013-04-29' AND '2013-05-05'然后搜索不唯一的电子邮件(即在之前的日期已经存在):
SELECT email
FROM Table1
WHERE date_applied < '2013-04-29'现在使用NOT IN从当前查询中排除这些电子邮件
SELECT DISTINCT `email` FROM Table1 AS A
WHERE A.date_applied
BETWEEN '2013-04-29' AND '2013-05-05'
AND A.email NOT IN (SELECT email FROM Table1
WHERE date_applied < '2013-04-29');现在使用COUNT()函数来获取电子邮件的数量。
请参阅this SQLFiddle
https://stackoverflow.com/questions/16411729
复制相似问题