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. पंक्तियों के बीच समय अंतर का योग

  2. PostgreSQL कस्टम अपवाद शर्तें

  3. PostgreSQL में पुनरावर्ती ट्रिगर रोकें

  4. SQLAlchemy, PostgreSQL और array_agg:array_agg से आइटम कैसे चुनें?

  5. जांचें कि पोस्टग्रेज़ तालिका में रिकॉर्ड मौजूद हैं या नहीं