PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पोस्टग्रेज - लापता डेटा के लिए 0 गिनती के साथ पंक्तियों को कैसे वापस करें?

उचित समाधान

SELECT *
FROM  (
   SELECT day::date
   FROM   generate_series(timestamp '2007-12-01'
                        , timestamp '2008-12-01'
                        , interval  '1 month') day
   ) d
LEFT   JOIN (
   SELECT date_trunc('month', date_col)::date AS day
        , count(*) AS some_count
   FROM   tbl
   WHERE  date_col >= date '2007-12-01'
   AND    date_col <= date '2008-12-06'
-- AND    ... more conditions
   GROUP  BY 1
   ) t USING (day)
ORDER  BY day;
  • LEFT JOIN का उपयोग करें , बिल्कुल।

  • generate_series() मक्खी पर टाइमस्टैम्प की एक तालिका तैयार कर सकता है, और बहुत तेजी से।

  • आमतौर पर पहले . को एकत्रित करना अधिक तेज़ होता है तुम सम्मलित हो। मैंने हाल ही में इस संबंधित उत्तर में sqlfiddle.com पर एक परीक्षण मामला प्रदान किया है:

    • PostgreSQL - एक सरणी द्वारा क्रम
  • timestamp कास्ट करें से date . तक (::date ) एक बुनियादी प्रारूप के लिए। अधिक उपयोग के लिए to_char()

  • GROUP BY 1 पहले आउटपुट कॉलम को संदर्भित करने के लिए सिंटैक्स शॉर्टहैंड है। GROUP BY day हो सकता है साथ ही, लेकिन यह उसी नाम के मौजूदा कॉलम के साथ विरोध कर सकता है। या GROUP BY date_trunc('month', date_col)::date लेकिन यह मेरे स्वाद के लिए बहुत लंबा है।

  • date_trunc() . के लिए उपलब्ध अंतराल तर्कों के साथ काम करता है ।

  • count() कभी भी NULL उत्पन्न नहीं करता है (0 पंक्तियों के बिना), लेकिन LEFT JOIN करता है।
    वापस करने के लिए 0 NULL . के बजाय बाहरी में SELECT , COALESCE(some_count, 0) AS some_count . का उपयोग करें . मैनुअल।

  • अधिक सामान्य समाधान या मनमाने समय अंतराल . के लिए इस निकट से संबंधित उत्तर पर विचार करें:

    • Rails+Postgres में मनमाने समय अंतराल द्वारा रिकॉर्ड गिनने का सबसे अच्छा तरीका


  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. SSH टनल के माध्यम से PostgreSQL

  3. पोस्टग्रेज़ नई पंक्ति का संदर्भ देने वाली पंक्ति के लिए NULL मान फ़ंक्शन करता है

  4. पोस्टग्रेएसक्यूएल प्रतिकृति सेटअप और रखरखाव Ansible का उपयोग कर

  5. PostgreSQL में विभिन्न सहायक योजना नोड्स का अवलोकन