group by
klausulen vil ikke oprette poster, hvor der ikke er nogen data, som du har set. Hvad du kunne gøre er at left join
hele dette resultat med et andet resultatsæt, der har alle de poster, du ønsker - f.eks. en, du genererer dynamisk med generate_series
:
SELECT generate_series AS month_number, cnt
FROM GENERATE_SERIES(1,12) g
LEFT JOIN (SELECT COUNT(s.id) AS cnt,
DATE_PART('month', s.viewed_at) AS month_number
FROM statistics_maps_view s
INNER JOIN maps m ON s.maps_id = m.id
WHERE m.users_id = $users_id
GROUP BY month_number) s ON g.generate_series = s.month_number
ORDER BY 1 ASC