mysql 计算前几个月未出现的结果

mysql count results not already present in previous months

我有 2 个 table,1 个 table "months" 和 1 个 table "ad"。我想每月从广告中获取所有不同的电子邮件,其中这些电子邮件尚未计入一年中的前几个月。

我今天有这样的事情:

SELECT months.id_month, Count(DISTINCT ad.email) 
FROM  `months` 
LEFT JOIN `ad` 
  ON id_month = Month(ad.created_at) 
 AND Year(ad.created_at) = 2015 
GROUP BY id_month 
ORDER BY id_month ASC 

输出:

但是对于 12 月,找到的 3 封不同的电子邮件已经在 11 月,并且 12 月的预期输出应该为 0。

有什么想法吗?

嗯。听起来您想计算每年第一次出现电子邮件的时间。如果是,则使用两个聚合:

SELECT m.id_month, Count(ad.email) 
FROM  months m LEFT OUTER JOIN
      (SELECT ad.email, MIN(ad.created_at) as created_at_2015
       FROM `ad` 
       WHERE Year(ad.created_at) = 2015 
       GROUP BY ad.email
      ) ad
      ON m.id_month = Month(ad.created_at_2015) 
GROUP BY m.id_month 
ORDER BY m.id_month ASC ;