OK,

this is quite brutal and is going to be very expensive, but I think it
does what you want.  The trick lies in the idea of joining a table with
itself.  Thus, I first define a virtual copy of the table (in my case
"dup") and then produce a query that joins the table to this copy.  Enjoy.

Oliver


detail=# \d mileage
         Table "mileage"
 Attribute |   Type    | Modifier 
-----------+-----------+----------
 miles     | integer   | 
 date      | timestamp | 

detail=# select * from mileage;
 miles |          date          
-------+------------------------
     5 | 2000-08-01 00:00:00+02
     9 | 2000-08-02 00:00:00+02
     4 | 2000-08-03 00:00:00+02
(3 rows)

detail=# \d dup
            View "dup"
 Attribute |   Type    | Modifier 
-----------+-----------+----------
 miles     | integer   | 
 date      | timestamp | 
View definition: SELECT mileage.miles, mileage.date FROM mileage;

detail=# select mileage.miles, mileage.date, sum(dup.miles) from mileage, dup where 
dup.date <= mileage.date group by mileage.date, mileage.miles order by mileage.date;
 miles |          date          | sum 
-------+------------------------+-----
     5 | 2000-08-01 00:00:00+02 |   5
     9 | 2000-08-02 00:00:00+02 |  14
     4 | 2000-08-03 00:00:00+02 |  18
(3 rows)


Reply via email to