Small. Fast. Reliable.
Choose any three.
*** 312,343 ****
    xy number
  );
  
! insert into sum_example values (to_date('27.08.1970','DD.MM.YYYY'),4);
! insert into sum_example values (to_date('02.09.1970','DD.MM.YYYY'),1);
! insert into sum_example values (to_date('09.09.1970','DD.MM.YYYY'),5);
! insert into sum_example values (to_date('26.08.1970','DD.MM.YYYY'),3);
! insert into sum_example values (to_date('28.08.1970','DD.MM.YYYY'),4);
! insert into sum_example values (to_date('26.08.1970','DD.MM.YYYY'),6);
! insert into sum_example values (to_date('29.08.1970','DD.MM.YYYY'),9);
! insert into sum_example values (to_date('30.08.1970','DD.MM.YYYY'),2);
! insert into sum_example values (to_date('12.09.1970','DD.MM.YYYY'),7);
! insert into sum_example values (to_date('23.08.1970','DD.MM.YYYY'),2);
! insert into sum_example values (to_date('27.08.1970','DD.MM.YYYY'),5);
! insert into sum_example values (to_date('09.09.1970','DD.MM.YYYY'),9);
! insert into sum_example values (to_date('01.09.1970','DD.MM.YYYY'),3);
! insert into sum_example values (to_date('07.09.1970','DD.MM.YYYY'),1);
! insert into sum_example values (to_date('12.09.1970','DD.MM.YYYY'),4);
! insert into sum_example values (to_date('03.09.1970','DD.MM.YYYY'),5);
! insert into sum_example values (to_date('03.09.1970','DD.MM.YYYY'),8);
! insert into sum_example values (to_date('07.09.1970','DD.MM.YYYY'),7);
! insert into sum_example values (to_date('04.09.1970','DD.MM.YYYY'),8);
! insert into sum_example values (to_date('09.09.1970','DD.MM.YYYY'),1);
! insert into sum_example values (to_date('29.08.1970','DD.MM.YYYY'),3);
! insert into sum_example values (to_date('30.08.1970','DD.MM.YYYY'),7);
! insert into sum_example values (to_date('24.08.1970','DD.MM.YYYY'),7);
! insert into sum_example values (to_date('07.09.1970','DD.MM.YYYY'),9);
! insert into sum_example values (to_date('26.08.1970','DD.MM.YYYY'),2);
! insert into sum_example values (to_date('09.09.1970','DD.MM.YYYY'),8);
  
  select dt, sum(xy) over (partition by trunc(dt) order by dt rows between
  unbounded preceding and current row) s, xy from sum_example;
--- 312,343 ----
    xy number
  );
  
! insert into sum_example values (to_date('27.08.1970','DD.MM.YYYY'),4);{linebreak}
! insert into sum_example values (to_date('02.09.1970','DD.MM.YYYY'),1);{linebreak}
! insert into sum_example values (to_date('09.09.1970','DD.MM.YYYY'),5);{linebreak}
! insert into sum_example values (to_date('26.08.1970','DD.MM.YYYY'),3);{linebreak}
! insert into sum_example values (to_date('28.08.1970','DD.MM.YYYY'),4);{linebreak}
! insert into sum_example values (to_date('26.08.1970','DD.MM.YYYY'),6);{linebreak}
! insert into sum_example values (to_date('29.08.1970','DD.MM.YYYY'),9);{linebreak}
! insert into sum_example values (to_date('30.08.1970','DD.MM.YYYY'),2);{linebreak}
! insert into sum_example values (to_date('12.09.1970','DD.MM.YYYY'),7);{linebreak}
! insert into sum_example values (to_date('23.08.1970','DD.MM.YYYY'),2);{linebreak}
! insert into sum_example values (to_date('27.08.1970','DD.MM.YYYY'),5);{linebreak}
! insert into sum_example values (to_date('09.09.1970','DD.MM.YYYY'),9);{linebreak}
! insert into sum_example values (to_date('01.09.1970','DD.MM.YYYY'),3);{linebreak}
! insert into sum_example values (to_date('07.09.1970','DD.MM.YYYY'),1);{linebreak}
! insert into sum_example values (to_date('12.09.1970','DD.MM.YYYY'),4);{linebreak}
! insert into sum_example values (to_date('03.09.1970','DD.MM.YYYY'),5);{linebreak}
! insert into sum_example values (to_date('03.09.1970','DD.MM.YYYY'),8);{linebreak}
! insert into sum_example values (to_date('07.09.1970','DD.MM.YYYY'),7);{linebreak}
! insert into sum_example values (to_date('04.09.1970','DD.MM.YYYY'),8);{linebreak}
! insert into sum_example values (to_date('09.09.1970','DD.MM.YYYY'),1);{linebreak}
! insert into sum_example values (to_date('29.08.1970','DD.MM.YYYY'),3);{linebreak}
! insert into sum_example values (to_date('30.08.1970','DD.MM.YYYY'),7);{linebreak}
! insert into sum_example values (to_date('24.08.1970','DD.MM.YYYY'),7);{linebreak}
! insert into sum_example values (to_date('07.09.1970','DD.MM.YYYY'),9);{linebreak}
! insert into sum_example values (to_date('26.08.1970','DD.MM.YYYY'),2);{linebreak}
! insert into sum_example values (to_date('09.09.1970','DD.MM.YYYY'),8);{linebreak}
  
  select dt, sum(xy) over (partition by trunc(dt) order by dt rows between
  unbounded preceding and current row) s, xy from sum_example;
***************
*** 345,376 ****
  drop table sum_example;
  
  The select statement will return:
! 23.08.70          2          2
! 24.08.70          7          7
! 26.08.70          3          3
! 26.08.70          5          2
! 26.08.70         11          6
! 27.08.70          4          4
! 27.08.70          9          5
! 28.08.70          4          4
! 29.08.70          9          9
! 29.08.70         12          3
! 30.08.70          2          2
! 30.08.70          9          7
! 01.09.70          3          3
! 02.09.70          1          1
! 03.09.70          5          5
! 03.09.70         13          8
! 04.09.70          8          8
! 07.09.70          1          1
! 07.09.70          8          7
! 07.09.70         17          9
! 09.09.70          5          5
! 09.09.70         14          9
! 09.09.70         15          1
! 09.09.70         23          8
! 12.09.70          7          7
! 12.09.70         11          4
  
  The third column correspondents to xy (the values inserted with the insert into ... above). The interesting column is the second. For example on the 26th of August in 1970, the first row for that date is 3 (equals xy), the second is 5 (equals xy+3) and the third is 11 (equals xy+3+5).
  
--- 345,377 ----
  drop table sum_example;
  
  The select statement will return:
! 
! 23.08.70          2          2{linebreak}
! 24.08.70          7          7{linebreak}
! 26.08.70          3          3{linebreak}
! 26.08.70          5          2{linebreak}
! 26.08.70         11          6{linebreak}
! 27.08.70          4          4{linebreak}
! 27.08.70          9          5{linebreak}
! 28.08.70          4          4{linebreak}
! 29.08.70          9          9{linebreak}
! 29.08.70         12          3{linebreak}
! 30.08.70          2          2{linebreak}
! 30.08.70          9          7{linebreak}
! 01.09.70          3          3{linebreak}
! 02.09.70          1          1{linebreak}
! 03.09.70          5          5{linebreak}
! 03.09.70         13          8{linebreak}
! 04.09.70          8          8{linebreak}
! 07.09.70          1          1{linebreak}
! 07.09.70          8          7{linebreak}
! 07.09.70         17          9{linebreak}
! 09.09.70          5          5{linebreak}
! 09.09.70         14          9{linebreak}
! 09.09.70         15          1{linebreak}
! 09.09.70         23          8{linebreak}
! 12.09.70          7          7{linebreak}
! 12.09.70         11          4{linebreak}
  
  The third column correspondents to xy (the values inserted with the insert into ... above). The interesting column is the second. For example on the 26th of August in 1970, the first row for that date is 3 (equals xy), the second is 5 (equals xy+3) and the third is 11 (equals xy+3+5).