Funciones Analíticas en Oracle I


Oracle tiene una gran variedad de funciones analíticas que mejoran la capacidad de desarrollo Business Intelligence. Mediante ejemplos veamos cómo pueden ayudarnos.


ROLLUP es una extensión de la cláusula group by y permite el cálculo de subtotales y totales para los grupos datos. 

La sintaxis es la siguiente:

Group by rollup (campo1, campo2)


Por ejemplo, supongamos que tenemos una tabla de DEPARTAMENTOS donde se recogen las distintas áreas departamentales de nuestra empresa y otra tabla de EMPLEADOS donde recoge toda la información de los trabajadores, su rango salarial, sueldo bruto y departamento al que pertenece, y queremos obtener el total de los sueldos de los empleados por departamento para cada rango salarial. Usando la opción ROLLUP podemos obtener el resultado deseado con una sencilla consulta:

select d.departamento, e.rango, sum(e.sueldo_bruto) as total
from departamentos d, empleados e
where d.id_departamento=e.id_empleado
group by ROLLUP (d.departamento, e.rango)
order by 1, 2;

El resultado obtenido debería parecerse a:

departamento    rango     total
-------------------------------
COMPRAS         A       120.000
COMPRAS         B        80.000
COMPRAS                 200.000 <- Subtotal por departamento
LOGISTICA       B        60.000
LOGISTICA       C        40.000
LOGISTICA               100.000
VENTAS          A       200.000
VENTAS          C        50.000
VENTAS                  250.000
                        550.000 <- Total

Podemos seguir experimentado con la función ROLLUP….por ejemplo, ¿que pasaría si sacamos el rango fuera de la función (group by ROLLUP (d.departamento) , e.rango)?

Comentarios

Entradas populares de este blog

Backup y Recuperación en Frío (ORACLE)

Uso de la función RANKX (DAX)