sql >> Database teknologi >  >> RDS >> PostgreSQL

Gruppér efter måned, returner 0, hvis der ikke blev fundet nogen post

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



  1. Lange strenge i N-Hibernate med Oracle forårsager fejl

  2. taps-migrering mislykkedes fra sqlite til postgres rails4, ruby ​​1.9.3

  3. Concat-funktionen virker ikke - ugyldigt antal argumenter

  4. Sådan konverteres mysql latin1 til utf8