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

PostgreSQL में एक तालिका में लापता तिथि जोड़ना

date एक आरक्षित शब्द है मानक SQL में और PostgreSQL में डेटा प्रकार का नाम। PostgreSQL इसे पहचानकर्ता के रूप में अनुमति देता है, लेकिन यह इसे एक अच्छा विचार नहीं बनाता है। मैं thedate का उपयोग करता हूं इसके बजाय कॉलम नाम के रूप में।

सरोगेट आईडी में अंतराल की अनुपस्थिति पर भरोसा न करें। यह लगभग हमेशा एक बुरा विचार है। ऐसी आईडी को बिना अर्थ के अद्वितीय संख्या के रूप में मानें , भले ही इसमें कुछ अन्य विशेषताएं हों अधिकांश समय

इस विशेष मामले में, @ के रूप में क्लोडोआल्डो ने टिप्पणी की , thedate एक आदर्श प्राथमिक कुंजी और कॉलम id . प्रतीत होता है बस क्रुफ़्ट है - जिसे मैंने हटा दिया:

CREATE TEMP TABLE tbl (thedate date PRIMARY KEY, rainfall numeric);
INSERT INTO tbl(thedate, rainfall) VALUES
  ('2002-05-06', 110.2)
, ('2002-05-07', 56.6)
, ('2002-05-09', 65.6)
, ('2002-05-10', 75.9);

क्वेरी

क्वेरी द्वारा पूरी तालिका:

SELECT x.thedate, t.rainfall  -- rainfall automatically NULL for missing rows
FROM (
   SELECT generate_series(min(thedate), max(thedate), '1d')::date AS thedate
   FROM   tbl
   ) x
LEFT   JOIN tbl t USING (thedate)
ORDER  BY x.thedate

@a_horse_with_no_name के समान पोस्ट किया गया है, लेकिन सरलीकृत किया गया है और काटे गए id . को अनदेखा कर दिया गया है ।

तालिका में पाई गई पहली और अंतिम तिथि के बीच के अंतराल को भरता है। यदि लीडिंग/लैगिंग गैप हो सकते हैं, तो तदनुसार विस्तार करें। आप date_trunc() का उपयोग कर सकते हैं जैसे @Clodoaldo प्रदर्शित - लेकिन उनकी क्वेरी सिंटैक्स त्रुटियों से ग्रस्त है और सरल हो सकती है।

INSERT अनुपलब्ध पंक्तियाँ

इसे करने का सबसे तेज़ और सबसे पठनीय तरीका है NOT EXISTS विरोधी अर्ध-जुड़ना।

INSERT INTO tbl (thedate, rainfall)
SELECT x.thedate, NULL
FROM (
   SELECT generate_series(min(thedate), max(thedate), '1d')::date AS thedate
   FROM   tbl
   ) x
WHERE NOT EXISTS (SELECT 1 FROM tbl t WHERE t.thedate = x.thedate)


  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 - Powershell

  3. क्या अस्थायी फ़ंक्शन जैसी कोई चीज़ है?

  4. स्ट्रैपी डेटाबेस.जेएस / मल्टीपल डेटाबेस कॉन्फिग

  5. PostgreSQL डेटाबेस कॉलम से गैर-संख्यात्मक मान लौटाएं