PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kelompokkan berdasarkan Bulan, kembalikan 0 jika tidak ada catatan yang ditemukan

group by klausa tidak akan membuat entri di mana tidak ada data, seperti yang Anda lihat. Yang dapat Anda lakukan adalah left join seluruh hasil ini dengan kumpulan hasil lain yang memiliki semua entri yang Anda inginkan - mis., entri yang Anda buat secara dinamis dengan 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. Zona waktu dengan waktu musim panas di PostgreSQL

  2. Tabel MySQL ke PostgreSQL membuat konversi - rangkaian karakter dan susunan

  3. Penyortiran PostgreSQL salah

  4. Mengapa saya bisa membuat tabel dengan PRIMARY KEY pada kolom nullable?

  5. Instalasi PostgreSQL di Docker