PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Групиране по месец, върнете 0, ако не е намерен запис

group by клауза няма да създава записи, където няма данни, както видяхте. Това, което можете да направите, е left join целият този резултат с друг набор от резултати, който съдържа всички записи, които искате - например такъв, който динамично генерирате с 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свързване на cakephp 2.0 с PostgreSQL

  2. Как да проверите дали даден масив е празен в Postgres

  3. SQLAlchemy Core - генериране на PostgreSQL SUBSTRING израз?

  4. Преглед на програмирането от страна на сървъра в PostgreSQL

  5. Tortoise ORM за Python не връща връзки на обекти (Pyndantic, FastAPI)