My Sql 统计12个月的数据,无数据填充0

统计某年12个月的数据

语句:

 

select
a.date,ifnull(b.num,0) count
from
(
SELECT CONCAT('2020年','1月') AS date UNION
SELECT CONCAT('2020年','2月') AS date UNION
SELECT CONCAT('2020年','3月') AS date UNION
SELECT CONCAT('2020年','4月') AS date UNION
SELECT CONCAT('2020年','5月') AS date UNION
SELECT CONCAT('2020年','6月') AS date UNION
SELECT CONCAT('2020年','7月') AS date UNION
SELECT CONCAT('2020年','8月') AS date UNION
SELECT CONCAT('2020年','9月') AS date UNION
SELECT CONCAT('2020年','10月') AS date UNION
SELECT CONCAT('2020年','11月') AS date UNION
SELECT CONCAT('2020年','12月') AS date
)a
left join
(select count(*) num,DATE_FORMAT(HappenTime,'%Y年%c月') months from orders group by DATE_FORMAT(CreationTime,'%Y-%m')) b
on a.date = b.months

 

注:上面的"2020年"可根据实际情况以参数的形式传入。

结果:

 

 统计当前往前推12个月的数据统计

语句:

CURDATE() - INTERVAL 1 MONTH表示当前时间往前推一个月
select a.`year_month` months ,ifnull(b.num,0) count 
from (SELECT DATE_FORMAT(CURDATE(), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 1 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 2 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 3 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 4 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 5 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 6 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 7 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 8 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 9 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 10 MONTH), '%Y-%m') AS `year_month` UNION SELECT DATE_FORMAT((CURDATE() - INTERVAL 11 MONTH), '%Y-%m') AS `year_month`) a left join (select count(*) num, DATE_FORMAT(CreationTime,'%Y-%m') months from records where IsDeleted=0 group by DATE_FORMAT(CreationTime,'%Y-%m')) b on a.`year_month` =b.months order by months

结果:

当前时间为2023-5

 

posted @ 2020-08-24 14:37  流年sugar  阅读(849)  评论(0编辑  收藏  举报