Mysql SQL查询统计数据,精确到12个月前

Mysql SQL查询统计数据,精确到12个月前,mysql,sql,database,group-by,subquery,Mysql,Sql,Database,Group By,Subquery,我试图统计从2019年2月起到2020年2月为止已预订的客户电子邮件总数。 每列应显示月份名称后和该月份名称后12个月的电子邮件总数 我正在使用的表 我现在使用的查询是 SELECT sub.monthNameYear, sub.monthName, COUNT(*), (SUM(COUNT(*)) OVER (ORDER BY sub.monthNameYear)) as incrementBooking FROM (SELECT DATE_FOR

我试图统计从2019年2月起到2020年2月为止已预订的客户电子邮件总数。 每列应显示月份名称后和该月份名称后12个月的电子邮件总数

我正在使用的表

我现在使用的查询是

SELECT sub.monthNameYear, sub.monthName,        
       COUNT(*),
       (SUM(COUNT(*)) OVER (ORDER BY sub.monthNameYear)) as incrementBooking
FROM (SELECT DATE_FORMAT(`reservation_for`,'%Y-%m') as monthNameYear,
             DATE_FORMAT(`reservation_for`, '%M %Y') as monthName, 
             email,
             COUNT(*) AS cnt
      FROM `reservations`
      GROUP BY email, DATE_FORMAT(`reservation_for`, '%Y-%m'),
            DATE_FORMAT(`reservation_for`,'%M %Y')
      HAVING COUNT(*) > 1 
     ) sub
GROUP BY sub.monthNameYear, sub.monthName;
我从这个查询中得到的结果是

我想得到的结果是12个月后

select t1.monthNameYear as FromYear, count(*) as Count
from reservations`t1
inner join
reservations t2
where datediff(month, t1.monthNameYear, t2.monthNameYear)<12 
and datediff(month, t1.monthNameYear, t2.monthNameYear)>=0
group by t1.monthNameYear

选择t1.monthNameYear作为FromYear,count(*)作为count
来自预订't1
内连接
保留t2
其中datediff(月,t1.monthNameYear,t2.monthNameYear)=0
按t1.monthNameYear分组

这就是你想要的吗?

我不明白计算结果。@GordonLinoff我正在计算2019年1月至2020年1月、2019年2月至2020年2月和2019年3月至2020年3月的电子邮件总数。那么“16”是如何计算的呢?@GordonLinoff 16只是一封电子邮件的总数,这是我定义的随机数。实际上,我只需要2019年1月至2020年1月、2019年2月至2020年2月和2019年3月至2020年3月的日期帮助。@GordonLinoff嘿,你能帮我吗。我刚刚为您更新了我的表映像。它给了我一个日期差函数无效的错误。