Sum
Hello All,
I have a single table as:
cod date value
---+-------------+-------
1 | 2002-03-12 | 5
2 | 2002-03-13 | 4
3 | 2002-03-13 | 7
4 | 2002-03-14 | 3
... and I would like to do a select that do `partial sums'.
So, for instance, I would like to do a select that returns:
cod date value partial sum
---+-------------+-------+--------------
1 | 2002-03-12 | 5 | 5
2 | 2002-03-13 | 4 | 9
3 | 2002-03-13 | 7 | 16
4 | 2002-03-14 | 3 | 19
As you can see, the row `partial sum' is what I am looking for. Do you
have any idea how can I do it?
Thanks in advance,
Marcelo Pereira
-- Remember that only God and Esc+:w saves.
__
(_.\ Marcelo Pereira |
/ / ___ marcelo@pereira.com |
/ (_/ _ \__ [Math|99] - IMECC |
_______\____/_\___)___Unicamp_______________/
I don't know of a SQL query that would do it, but you could do it in pgsql
or some other language... just run the normal query (the first one) and
then as you loop through the result set add 'value' to 'partial_sum' and
there you have it...
-philip
On Thu, 28 Mar 2002, Marcelo Pereira wrote:
Show quoted text
Hello All,
I have a single table as:
cod date value
---+-------------+-------
1 | 2002-03-12 | 5
2 | 2002-03-13 | 4
3 | 2002-03-13 | 7
4 | 2002-03-14 | 3... and I would like to do a select that do `partial sums'.
So, for instance, I would like to do a select that returns:
cod date value partial sum
---+-------------+-------+--------------
1 | 2002-03-12 | 5 | 5
2 | 2002-03-13 | 4 | 9
3 | 2002-03-13 | 7 | 16
4 | 2002-03-14 | 3 | 19As you can see, the row `partial sum' is what I am looking for. Do you
have any idea how can I do it?Thanks in advance,
Marcelo Pereira
-- Remember that only God and Esc+:w saves.
__
(_.\ Marcelo Pereira |
/ / ___ marcelo@pereira.com |
/ (_/ _ \__ [Math|99] - IMECC |
_______\____/_\___)___Unicamp_______________/---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?
Hello Philip,
I am using PHP to show the results in a html file, and I have this
`partial sum' running the same way you told. I am just looking around to
know if I can do this straight from a sql query, without any type of
external script, as I am already doing.
Thanks for you answer.
Best Regards,
Marcelo Pereira
-- Remember that only God and Esc+:w saves.
__
(_.\ Marcelo Pereira |
/ / ___ |
/ (_/ _ \__ Matematica/99 - IMECC |
_______\____/_\___)___Unicamp_______________/
--- Philip Hallstrom, with his fast fingers, wrote:
:> I don't know of a SQL query that would do it, but you could do it in pgsql
:> or some other language... just run the normal query (the first one) and
:> then as you loop through the result set add 'value' to 'partial_sum' and
:> there you have it...
:>
:> -philip
:>
:> On Thu, 28 Mar 2002, Marcelo Pereira wrote:
:>
:> > Hello All,
:> >
:> > I have a single table as:
:> >
:> > cod date value
:> > ---+-------------+-------
:> > 1 | 2002-03-12 | 5
:> > 2 | 2002-03-13 | 4
:> > 3 | 2002-03-13 | 7
:> > 4 | 2002-03-14 | 3
:> >
:> > ... and I would like to do a select that do `partial sums'.
:> >
:> > So, for instance, I would like to do a select that returns:
:> >
:> > cod date value partial sum
:> > ---+-------------+-------+--------------
:> > 1 | 2002-03-12 | 5 | 5
:> > 2 | 2002-03-13 | 4 | 9
:> > 3 | 2002-03-13 | 7 | 16
:> > 4 | 2002-03-14 | 3 | 19
:> >
:> > As you can see, the row `partial sum' is what I am looking for. Do you
:> > have any idea how can I do it?
:> >
:> > Thanks in advance,
:> >
:> > Marcelo Pereira
:> >
:> > -- Remember that only God and Esc+:w saves.
:> > __
:> > (_.\ Marcelo Pereira |
:> > / / ___ marcelo@pereira.com |
:> > / (_/ _ \__ [Math|99] - IMECC |
:> > _______\____/_\___)___Unicamp_______________/
:> >
:> >
:> >
:> > ---------------------------(end of broadcast)---------------------------
:> > TIP 5: Have you checked our extensive FAQ?
:> >
:> > http://www.postgresql.org/users-lounge/docs/faq.html
:> >
:>
Marcelo,
Assuming that "cod" is unique and sequencial, you can use the following:
SELECT *, ( SELECT SUM( value) from table as t2 where t2.cod <= t1.cod)
as running_total
FROM table as t1
ORDER BY cod;
jll
Marcelo Pereira wrote:
Show quoted text
Hello All,
I have a single table as:
cod date value
---+-------------+-------
1 | 2002-03-12 | 5
2 | 2002-03-13 | 4
3 | 2002-03-13 | 7
4 | 2002-03-14 | 3... and I would like to do a select that do `partial sums'.
So, for instance, I would like to do a select that returns:
cod date value partial sum
---+-------------+-------+--------------
1 | 2002-03-12 | 5 | 5
2 | 2002-03-13 | 4 | 9
3 | 2002-03-13 | 7 | 16
4 | 2002-03-14 | 3 | 19As you can see, the row `partial sum' is what I am looking for. Do you
have any idea how can I do it?Thanks in advance,
Marcelo Pereira
After much thought on Mar 28 Jean-Luc Lachance wrote:
Marcelo,
Assuming that "cod" is unique and sequencial, you can use the following:
SELECT *, ( SELECT SUM( value) from table as t2 where t2.cod <= t1.cod)
as running_total
FROM table as t1
ORDER BY cod;jll
Subqueries outside of the where clause are great! I hadn't come accross
them when working with the more well advertised database products.
Are they SQL9x compliant? I try to develop using non postgres specific
tools when I can.
Jim
P E R F E C T !!!
Hello Jean-Luc,
Thanks for your answer, it was exacty what I was needing.
Best Regards,
See ya,
Marcelo Pereira
-- Remember that only God and Esc+:w saves.
__
(_.\ Marcelo Pereira |
/ / ___ |
/ (_/ _ \__ Matematica/99 - IMECC |
_______\____/_\___)___Unicamp_______________/
--- Jean-Luc Lachance, with his fast fingers, wrote:
:> Marcelo,
:>
:> Assuming that "cod" is unique and sequencial, you can use the following:
:>
:> SELECT *, ( SELECT SUM( value) from table as t2 where t2.cod <= t1.cod)
:> as running_total
:> FROM table as t1
:> ORDER BY cod;
:>
:> jll
:>
:>
:> Marcelo Pereira wrote:
:> >
:> > Hello All,
:> >
:> > I have a single table as:
:> >
:> > cod date value
:> > ---+-------------+-------
:> > 1 | 2002-03-12 | 5
:> > 2 | 2002-03-13 | 4
:> > 3 | 2002-03-13 | 7
:> > 4 | 2002-03-14 | 3
:> >
:> > ... and I would like to do a select that do `partial sums'.
:> >
:> > So, for instance, I would like to do a select that returns:
:> >
:> > cod date value partial sum
:> > ---+-------------+-------+--------------
:> > 1 | 2002-03-12 | 5 | 5
:> > 2 | 2002-03-13 | 4 | 9
:> > 3 | 2002-03-13 | 7 | 16
:> > 4 | 2002-03-14 | 3 | 19
:> >
:> > As you can see, the row `partial sum' is what I am looking for. Do you
:> > have any idea how can I do it?
:> >
:> > Thanks in advance,
:> >
:> > Marcelo Pereira
:>
Maybe our resident expert on SQL standard, Tom Lane, would care to
answer this one.
Jim Martinez wrote:
Show quoted text
After much thought on Mar 28 Jean-Luc Lachance wrote:
Marcelo,
Assuming that "cod" is unique and sequencial, you can use the following:
SELECT *, ( SELECT SUM( value) from table as t2 where t2.cod <= t1.cod)
as running_total
FROM table as t1
ORDER BY cod;jll
Subqueries outside of the where clause are great! I hadn't come accross
them when working with the more well advertised database products.Are they SQL9x compliant? I try to develop using non postgres specific
tools when I can.Jim