sql >> Databáze >  >> RDS >> PostgreSQL

Seskupit podle měsíce, vraťte 0, pokud nebyl nalezen žádný záznam

group by klauzule nevytvoří položky, kde nejsou žádná data, jak jste viděli. Co můžete udělat, je left join celý tento výsledek s jinou sadou výsledků, která obsahuje všechny požadované položky – např. takovou, kterou dynamicky vygenerujete pomocí 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. Vložení NOW() do databáze s aktivním záznamem CodeIgniter

  2. Chybová zpráva MYSQL DBDump

  3. 2 způsoby, jak vytvořit databázi na propojeném serveru pomocí T-SQL

  4. Jak převést excelový list do databáze sqlite v Androidu