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

पोस्टग्रेज - दूसरे कॉलम के योग के परिणाम के आधार पर रकम की गणना

मैंने row_count() . का उपयोग किया है चूंकि लगातार पंक्ति संख्याओं की आवश्यकता होती है। आपको प्राथमिक कुंजी पर भरोसा नहीं करना चाहिए, क्योंकि इसमें आमतौर पर अंतराल हो सकते हैं।

with recursive cte as (
    select *, row_number() over (order by id)
    from measurements
),
work_table as (
    select 
        id,
        count as count_sum,
        volume as volume_sum,
        row_number
    from cte
    where row_number = 1
    union all
    select
        c.id,
        case when w.volume_sum >= 100
            then c.count
            else w.count_sum + c.count
        end as count_sum,
        case
            when w.volume_sum >= 100
            then c.volume
            else w.volume_sum + c.volume
        end as discrete_sum_volume,
        c.row_number
    from cte c
    join work_table w
    on c.row_number = w.row_number + 1
)
select count_sum, volume_sum
from work_table
where volume_sum >= 100
or id = (select max(id) from work_table)
order by id

परिणाम:

 count_sum | volume_sum 
-----------+------------
        87 |        111
        49 |        100
         2 |       16.5
(3 rows)

SqlFiddle.




  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. Django स्थिरता बहुत धीमी लोड हो रही है

  3. क्वेरी से ऑब्जेक्ट निकालें यदि कोई नहीं या शून्य

  4. डॉकटर वॉल्यूम को एक मशीन से दूसरी मशीन में कैसे कॉपी करें?

  5. पोस्टग्रेज में डीएसटी के लिए लेखांकन, अनुसूचित वस्तुओं का चयन करते समय