mysql中的累积值

时间:2017-02-24 17:46:24

标签: mysql date

我有一张这样的表:

Tournament Name        Start             End
Chess  A              2016-12-14     2017-01-31
Football B            2016-08-01     2017-02-15
....

我需要创建一个表格,告诉我每月正在进行的锦标赛的数量。类似的东西:

Month-Year    Number of ongoing Tournaments
01-2016           2
02-2016           3
...
12-2016           4

有什么建议吗? 感谢

1 个答案:

答案 0 :(得分:1)

您可以生成月份列表,然后使用join或相关子查询:

select date_format(month_start, '%Y-%m') as yyyymm,
       (select count(*)
        from tournaments t
        where t.start <= m.month_start and
              t.end >= m.month_start + interval 1 month
       ) as ongoing
from (select date('2016-01-01') as month_start union all
      select date('2016-02-01') as month_start
     ) m;

注意:这仅计算整个月有效的锦标赛。如果您想要对部分月份锦标赛进行计数,则可以调整where子句。