Oracle : crear una suma acumulada

Para crear una suma acumulada usaremos las funciones analíticas de oracle. Un ejemplo completo

--creacion de la tabla
create table gastos(nombre varchar2(30),dia integer,gasto integer);
--inserción de datos de prueba
insert into gastos values('diego',1,10);
insert into gastos values('diego',2,20);
insert into gastos values('diego',3,30);
insert into gastos values('fede',1,5);
insert into gastos values('fede',2,20);
insert into gastos values('fede',3,10);

--agrupa por nombre, ordena por día
select nombre,dia,gasto, sum(gasto) over (partition by nombre order by dia desc rows unbounded preceding) sum_acu from gastos;
Con partition dividimos en grupos.
Con order by indicamos el campo de ordenación

2 comentarios:

Diego Gerena (SNIPERCAT) dijo...

Exactamente lo que necesitaba jeje. pensé que no funcionaria por que no tiene el group By, pero al parecer el "over" lo remplaza...

De pronto le sirva este post, para que el código se vea más bonito :).


http://www.creandoweb.net/2012/04/resaltador-de-sintaxis.html

Diego dijo...

Gracias snipercat por el enlace