1、创建一个有数据的临时表,判断最终接口返回的条数有上限有多少,一般每年/月/日统计搞个上千条数据差不多(主要是为了后面能查出需要的时间段条数)。这里为了方便直接找mysql库的一个表来测试。
2、查出所需时间段
例如:统计2022年8月到2023年1月的数据
SELECT
@cdate := DATE_SUB( @cdate, INTERVAL 1 MONTH ) `date`
FROM
( SELECT @cdate := DATE_ADD( '2023-01-01', INTERVAL 2 MONTH ) FROM MYSQL.help_topic ) t1
WHERE
@cdate > '2022-08-01'
结果:
2023-02-01
2023-01-01
2022-12-01
2022-11-01
2022-10-01
2022-09-01
2022-08-01
tips:这里最多统计多少条取决于临时表的数据有多少条
3、统计正常业务数据
SELECT create_time, sum( num ) total FROM 业务表
create_time total
2023-02-01 1
2022-11-01 7
2022-10-01 10
4、最后用时间临时表左连接正常统计的sql
SELECT
a.create_time,
ifnull( b.total, 0 )
FROM
(
SELECT
@cdate := DATE_SUB( @cdate, INTERVAL 1 MONTH ) `date`
FROM
( SELECT @cdate := DATE_ADD( '2023-01-01', INTERVAL 2 MONTH ) FROM MYSQL.help_topic ) t1
WHERE
@cdate > '2022-08-01'
) a
LEFT JOIN ( SELECT create_time, sum( num ) total FROM 业务表 ) b ON a.create_time = b.create_time