ROLLUP en SQL

La cláusula de agrupamiento ROLLUP en SQL, nos sirven para generar resultados resumidos de diferentes maneras.

Término ROLLUP en SQL

El término ROLLUP en SQL es similar al de CUBE, se refiere a una cláusula que se puede utilizar en una consulta agrupada para generar resultados sub-totales además de los totales generales.

Esta permite a una consulta agrupada generar resultados para cada combinación de valores de las columnas especificadas en la cláusula GROUP BY, así como resultados totales para cada columna especificada.

Por ejemplo, si se tiene una tabla de ventas con atributos como fecha, producto y cantidad vendida, se puede utilizar un ROLLUP para calcular el total de ventas por producto y el total de ventas en general.

Un ejemplo práctico de rollup en SQL podría ser,

SELECT fecha, producto, cantidad_vendida, SUM(cantidad_vendida) AS total_ventas
FROM ventas
GROUP BY ROLLUP(fecha, producto, cantidad_vendida)

En este caso, se está utilizando un ROLLUP para agrupar los resultados de la consulta según los atributos fecha, producto y cantidad vendida y calcular el total de ventas para cada nivel jerárquico de estos atributos.

Además, se está utilizando la función SUM para calcular el total de ventas y se está asignando el resultado a un alias llamado total_ventas.

Si se supone que la tabla ventas contiene los siguientes datos,
 
fecha producto cantidad_vendida
01/01/2022 zapatos 10
01/01/2022 camisa 5
02/01/2022 zapatos 20
02/01/2022 camisa 10
03/01/2022 zapatos 15
03/01/2022 camisa 20

La consulta anterior devolvería un conjunto de resultados con seis filas,

  • Una para el total de ventas por fecha, producto y cantidad vendida
  • Una para el total de ventas por fecha y producto
  • Una para el total de ventas por fecha
  • Una para el total de ventas por producto
  • Una para el total de ventas por cantidad vendida
  • Una para el total de ventas en general.

Los resultados de la consulta serían los siguientes,

fecha producto cantidad_vendida total_ventas
01/01/2022 zapatos 10 10
01/01/2022 camisa 5 5
02/01/2022 zapatos 20 20
02/01/2022 camisa 10 10
03/01/2022 zapatos 15 15
03/01/2022 camisa 20 20
01/01/2022 NULL NULL 15
02/01/2022 NULL NULL 30
03/01/2022 NULL NULL 35
NULL zapatos NULL 45
 

☑️ Programar en SQL