mysql计数结果在前几个月尚未出现

时间:2015-12-13 12:28:32

标签: mysql sql join left-join

我有2张桌子,1张桌子"月份和#34;和1个表" 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 

输出:

enter image description here

但是在12月份,发现的3封不同的电子邮件已经在11月,12月的预期输出应为0。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

嗯。听起来你想要计算每年第一次发送电子邮件。如果是,则使用两个聚合:

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 ;