Re: Incremental sum ?

From: "Ross J(dot) Reedstrom" <reedstrm(at)rice(dot)edu>
To: Alex Pilosov <alex(at)pilosoft(dot)com>
Cc: Domingo Alvarez Duarte <domingo(at)dad-it(dot)com>, pgsql-sql(at)postgresql(dot)org
Subject: Re: Incremental sum ?
Date: 2001-06-22 16:21:19
Message-ID: 20010622112119.D13451@rice.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

And here's the working example: not the need to GROUP BY, and <=
to get the current payment.

select cust_id,invoice_id,val,paid, (select (sum(val) - sum(paid))
from invoices_not_paid where cust_id= i.cust_id and invoice_id <=
i.invoice_id group by cust_id) as balance from invoices_not_paid i;

and it's output:

cust_id | invoice_id | val | paid | balance
---------+------------+-----------+----------+-----------
1 | 23 | 10.500000 | 3.400000 | 7.100000
1 | 34 | 5.700000 | 0.000000 | 12.800000
1 | 67 | 23.890000 | 4.500000 | 32.190000
(3 rows)

Ross

On Fri, Jun 22, 2001 at 11:29:25AM -0400, Alex Pilosov wrote:
> It should be done using subqueries.
> select ..., (
> select sum(val)-sum(paid) from invoices i2
> where i2.invoice_id<i.invoice_id
> and i2.cust_id=i.cust_id
> )
> from invoices i
>
>
> On 22 Jun 2001, Domingo Alvarez Duarte wrote:
>
> > I have a problem that requires what I call a incremental sum, lets say
> > I have the folowing table (for simplicity):
> >
> > table invoices_not_paid(cust_id int, invoice_id int, val numeric, paid
> > numeric);
> >
> > with the folowing values:
> >
> > cust_id invoice_id val paid
> > ----------------------------------
> > 1 23 10.50 3.40
> > 1 34 5.70 0.0
> > 1 67 23.89 4.50
> >
> >
> > I want show a list like this:
> >
> > cust_id invoice_id val paid incremental_not_paid_sum
> > -----------------------------------------------------------------
> > 1 23 10.50 3.40 (10.50 - 3.40) 7.10
> > 1 34 5.70 0.0 (7.10 + 5.70 - 0.0) 12.80
> > 1 67 23.89 4.50 (12.80 + 23.89 - 4.50) 31.19
> >
> > The operations betwen () are showed only to explain how the
> > incremental_not_paid_sum is calculated, The operation requires a
> > reference to a previous column or a partial sum of columns till that
> > moment, someone has an idea how this can be done using sql ?
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 4: Don't 'kill -9' the postmaster
> >
> >
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://www.postgresql.org/search.mpl

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Kristoff Bonne 2001-06-22 16:31:03 Re: What is a "tuple"
Previous Message Richard Huxton 2001-06-22 16:08:25 Re: Difference between insert a tuple in a table by function and by datasheet