我有一张这样的表:
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
有什么建议吗? 感谢
答案 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
子句。