PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Nhóm theo tháng, trả về 0 nếu không tìm thấy bản ghi

Nhóm group by mệnh đề sẽ không tạo các mục nhập không có dữ liệu, như bạn đã thấy. Những gì bạn có thể làm là left join toàn bộ kết quả này với một tập hợp kết quả khác có tất cả các mục bạn muốn - ví dụ:một mục bạn tạo động với 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. Truy vấn PostgreSQL cho danh sách các giá trị được phép trong một ràng buộc?

  2. Cách kết nối với cơ sở dữ liệu PostgreSQL từ xa thông qua SSL với Python

  3. Khắc phục “LỖI:mỗi truy vấn INTERSECT phải có cùng số cột” trong PostgreSQL

  4. Làm cách nào để viết truy vấn postgres này trong Amazon redshift sao cho nó được tối ưu hóa như trong postgres?

  5. Lỗi với auto_increment khi được kết nối với Postgres qua psql và puTTY