I think your current query is wrong. Please check this one:
SELECT CAST(day AS date) AS day , COALESCE(SUM(bad),0) AS bad , COALESCE(SUM(awful),0) AS awful , COALESCE(SUM(catastrophic),0) AS catastrophicFROM problem_reports RIGHT JOIN GENERATE_SERIES( DATE_TRUNC('day', '2025-03-01'::date), DATE_TRUNC('day', '2025-03-07'::date),'1 day'::interval) gs(day) USING(day)GROUP BY 1ORDER BY 1;
When you have an index on the column day
it should be fast.