Re: aggregate function ?

From: Richard Broersma Jr <rabroersma(at)yahoo(dot)com>
To: Raimon Fernandez <coder(at)montx(dot)com>, pgsql-novice(at)postgresql(dot)org
Subject: Re: aggregate function ?
Date: 2007-05-15 21:59:52
Message-ID: 183533.40800.qm@web31802.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice


--- Raimon Fernandez <coder(at)montx(dot)com> wrote:

> hi again,
>
>
> Some days ago I asked for help, nobody replied, and after trying to
> do it in some way, I think aggregate function is the solution to my
> problem, but I found difficult to understand how it works ...
>
> What I want to do is accumulate the value for each row and add it to
> the next:
>
> a 100 100
> b 50 150
> c 25 175
>
One solution is to use a correlated sub-query:

SELECT A.letter_field, A.letter_value,
( SELECT sum( letter_value )
FROM Your_table AS B
WHERE B.letter_field <= A.letter_field ) AS value_sum
FROM Your_table AS A
ORDER BY A.letter_field;

Another solution is to use a join:

SELECT A.letter_field, A.letter_value,
sum( B.letter_value ) AS value_sum
FROM Your_table AS A
INNER JOIN Your_table AS B
ON A.letter_field <= B.letter_field
GROUP BY A.letter_field, A.letter_value,
ORDER BY A.letter_field;

There are a couple of good SQL books that are really good at teaching methods on how to construct
such queries if you are enterested.

Regards,
Richard Broersma Jr.

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message Raimon Fernandez 2007-05-15 23:38:49 Re: aggregate function ?
Previous Message Neil Saunders 2007-05-15 21:51:34 Re: Invalid byte sequence for encoding "UTF8"