Vytvořte tabulku se všemi měsíci a poté ji doleva připojte k dotazu. V souladu s
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
Bude to fungovat, ale vrátí vám výsledky od ledna do prosince a nedá vám roky. Podobná otázka byla položena dříve, pak jsem přišel s velmi složitým dotazem, takže pokud nenajdete nic jednoduššího, zvažte se podívat:
Dotaz mezi daty nefunguje, teď jsme v novém roce