From: | Mark Dilger <pgsql(at)markdilger(dot)com> |
---|---|
To: | lucas(at)presserv(dot)org |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Sum() rows |
Date: | 2005-06-01 01:09:45 |
Message-ID: | 429D0AD9.7070202@markdilger.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
lucas(at)presserv(dot)org wrote:
> Hi.
> How can I sum a row and show the sum for each row???
> For example, in a finances table that have the total movimentation(debit/credit)
> in the bank.
>
> i.e:
> CREATE TABLE TB1 (id integer primary key, value numeric);
> insert into tb1 values (1,20);
> insert into tb1 values (2,2);
> insert into tb1 values (3,3);
> insert into tb1 values (4,17);
> insert into tb1 values (5,-0.5);
> insert into tb1 values (6,3);
>
> I want a query that returns:
> -id- | --- value --- | --- subtot ---
> 1 | 20.00 | 20.00
> 2 | 2.00 | 22.00
> 3 | 3.00 | 25.00
> 4 | 17.00 | 42.00
> 5 | -0.50 | 41.50
> 6 | 3.00 | 44.50
>
> The subtot colum will be the "prev. subtot colum"+"value colum". :-/
> I dont know how to make the "subtot" colum, I tried to use the sum() function
> but it not works correctly.
> Any idea???
>
> Thanks.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faq
CREATE TABLE tb1 (id integer primary key, value numeric);
CREATE TYPE subtotal_type AS (id integer, value numeric, subtotal numeric);
CREATE OR REPLACE FUNCTION subtotal () RETURNS SETOF subtotal_type AS $$
DECLARE
tbrow RECORD;
sbrow subtotal_type;
BEGIN
sbrow.subtotal := 0;
FOR tbrow IN
SELECT id, value FROM tb1 ORDER BY id
LOOP
sbrow.id := tbrow.id;
sbrow.value := tbrow.value;
sbrow.subtotal := sbrow.subtotal + tbrow.value;
RETURN NEXT sbrow;
END LOOP;
RETURN;
END;
$$ LANGUAGE plpgsql;
insert into tb1 (id, value) values (1, 20.0);
insert into tb1 (id, value) values (2, 2.0);
insert into tb1 (id, value) values (3, 3.0);
select * from subtotal();
From | Date | Subject | |
---|---|---|---|
Next Message | Mark Dilger | 2005-06-01 01:43:46 | Re: Sum() rows |
Previous Message | PFC | 2005-05-31 23:11:45 | Re: Sum() rows |