SELECT date as date, IFNULL(tab.num, 0) as num FROM (
# 生成月份表 @符号定义一个变量,而不是识别为列名
SELECT
	DATE_FORMAT(@cdate := date_add( @cdate, INTERVAL - 1 MONTH ),'%Y-%m') as date
FROM
	( 
	SELECT @cdate := date_add(CURDATE(), INTERVAL 1 MONTH )
	FROM fault LIMIT 12)d
	ORDER BY date
)date_c LEFT JOIN (
# 查询数据
SELECT COUNT(*) as num, DATE_FORMAT(fault_time,'%Y-%m') as t
FROM fault WHERE 1=1 GROUP BY DATE_FORMAT(fault_time,'%Y-%m')
)tab ON t=date

解释:

注意:FROM fault LIMIT 12中的表fault,数据必须大于12,否则会出错,可以换成数据量一定大于12的表

fault 为要查询的表

fault_time 为筛选的时间列

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐