SQL – SUM total en consulta jerárquica

abril 24, 2012

Si tienes una tabla con una estructura jerárquica y quieres calcular una función agregada como SUM, aquí te mostraré como. Supongamos que tenemos una tabla como la siguiente (puedes tener más de una tabla pero deberás primero obtener una vista o subconsulta con una estructura semejante).

id nombre id_jefe salario
1 Jorge 30000
2 Juan 1 25000
3 Jaime 2 12000
4 Jose 2 12000

Para obtener un listado jerárquico de los empleados podemos realizar la siguiente consulta:

SELECT LPAD(nombre,LENGTH(nombre)+((LEVEL-1)*3),' ') AS nombre, salario
FROM empleados
START WITH id_jefe IS NULL
CONNECT BY PRIOR id=id_jefe

lo que nos mostraría

Jorge            30000
   Juan          25000
     Jaime      12000
     Jose       12000

Para obtener la suma de los sueldos de forma jerárquica lo hacemos de la siguiente manera:

SELECT LPAD(nombre,LENGTH(nombre)+((LEVEL-1)*3),' ') AS nombre, salario,
   (SELECT SUM(e2.salario)
    FROM empleados e2
    START WITH e2.id=e1.id
    CONNECT BY PRIOR e2.id=e1.id_jefe) AS total
FROM empleados e1
START WITH e1.id_jefe IS NULL
CONNECT BY PRIOR id=id_jefe

que resulta en:
Jorge            79000
   Juan          49000
     Jaime      12000
     Jose       12000

Fuentes:
http://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11QUESTIONID:30609389052804
https://forums.oracle.com/forums/thread.jspa?messageID=1968105

Anuncios

Una respuesta to “SQL – SUM total en consulta jerárquica”


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: