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

दिनांक के अनुसार समूहीकरण, 0 के साथ जब गिनती () कोई रेखा नहीं देती है

यह देखते हुए कि आपके पास तालिका में तिथियां नहीं हैं, आपको उन्हें उत्पन्न करने का एक तरीका चाहिए। आप generate_series का उपयोग कर सकते हैं समारोह:

SELECT * FROM generate_series('2012-01-01'::timestamp, '2012-01-07 23:00', '1 hour') AS ts;

यह इस तरह के परिणाम देगा:

         ts          
---------------------
 2012-01-01 00:00:00
 2012-01-01 01:00:00
 2012-01-01 02:00:00
 2012-01-01 03:00:00
...
 2012-01-07 21:00:00
 2012-01-07 22:00:00
 2012-01-07 23:00:00
(168 rows)

शेष कार्य इस तरह बाहरी जुड़ाव का उपयोग करके दो चयनों में शामिल होना है:

select extract ( day from ts ) as day, extract ( hour from ts ) as hour,coalesce(count,0) as count from 
(
    SELECT  extract ( day from date ) as day , extract ( hour from date ) as hr ,count(*)
    FROM    sr
    where date>'2012-01-01' and date <'2012-01-07'
    GROUP BY   extract ( day from date ) , extract ( hour from date )
) AS cnt 
 right outer join ( SELECT * FROM generate_series ( '2012-01-01'::timestamp, '2012-01-07 23:00', '1 hour') AS ts ) as dtetable on extract ( hour from ts ) = cnt.hr and extract ( day from ts ) = cnt.day 
 order by day,hour 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. अवैध निर्देश:4 Django चलाते समय

  2. पोस्टग्रेज इंस्टालेशन डेटाबेस क्लस्टर इनिशियलाइज़ेशन विफल (Postgresql संस्करण 9.4.4)

  3. PostgreSQL के साथ XML विहित तुलना कैसे करें?

  4. एक अलग सेवा के रूप में एंबेडेड पोस्टग्रेएसक्यूएल सर्वर जावा घटक का उपयोग कैसे करें?

  5. पीजीबैकरेस्ट कैसे स्थापित करें