Crie uma tabela com todos os meses e, em seguida, junte-a à sua consulta. Ao longo das linhas de
select count(1) as count, months.month, year(published_at) as year
from months left join articles on months.month = month(published_at)
where published_at >= (now() - interval 1 year) and published_at <= now()
group by month(published_at)
order by year asc, month asc
Vai dar certo, mas vai te retornar resultados de janeiro a dezembro, e não vai te dar anos. Uma pergunta semelhante foi feita antes, então eu criei uma consulta muito complexa, então se você não encontrar nada mais simples, considere dar uma olhada:
Entre a consulta de datas não está funcionando, agora estamos em um novo ano