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

मैं पिछले गैर-शून्य मान को कुशलतापूर्वक कैसे चुनूं?

मुझे यह उत्तर SQL सर्वर के लिए मिला जो पोस्टग्रेज़ में भी काम करता है। इसे पहले कभी नहीं करने के बाद, मुझे लगा कि तकनीक काफी चतुर है। मूल रूप से, वह नेस्टेड क्वेरी के अंदर एक केस स्टेटमेंट का उपयोग करके विंडोिंग फ़ंक्शन के लिए एक कस्टम विभाजन बनाता है जो एक योग को बढ़ाता है जब मान शून्य नहीं होता है और इसे अकेला छोड़ देता है। यह प्रत्येक नल अनुभाग को पिछले गैर-शून्य मान के समान संख्या के साथ चित्रित करने की अनुमति देता है। ये रही क्वेरी:

SELECT
  id, value, value_partition, first_value(value) over (partition by value_partition order by id)
FROM (
  SELECT
    id,
    value,
    sum(case when value is null then 0 else 1 end) over (order by id) as value_partition

  FROM p
  ORDER BY id ASC
) as q

और परिणाम:

 id | value | value_partition | first_value
----+-------+-----------------+-------------
  1 |   100 |               1 |         100
  2 |       |               1 |         100
  3 |       |               1 |         100
  4 |       |               1 |         100
  5 |       |               1 |         100
  6 |       |               1 |         100
  7 |       |               1 |         100
  8 |   200 |               2 |         200
  9 |       |               2 |         200
(9 rows)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. तार्किक प्रतिकृति के साथ PostgreSQL 11 में अपग्रेड करना

  2. बड़ी संख्या का समर्थन करने वाला प्राकृतिक प्रकार

  3. मैं इस फ़ंक्शन में अपने रिटर्न मानों के लिए स्वरूपण कैसे बदलूं?

  4. मरम्मत भ्रष्ट डेटाबेस postgresql

  5. PostgreSQL डेटाबेस में सभी संग्रहीत प्रक्रियाओं को सूचीबद्ध करने के 3 तरीके