CUBE en SQL

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

Término CUBE en SQL

El término CUBE en SQL es similar al ROLLUP, pero genera resultados sub-totales para todas las posibles combinaciones de valores de las columnas especificadas en la cláusula GROUP BY, en lugar de sólo para cada combinación única.

Por lo tanto, una consulta que incluye la cláusula CUBE generará resultados para cada combinación única de valores de las columnas especificadas en la cláusula GROUP BY, así como resultados sub-totales para cada columna y resultados totales generales para todos los datos en la tabla.

Por ejemplo, si se tiene una tabla de ventas con atributos como fecha, producto y cantidad vendida, se puede utilizar para calcular el total de ventas por producto, fecha y cualquier combinación de ambos.

Un ejemplo de CUBE en SQL podría ser,

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

En este caso, se está utilizando para agrupar los resultados de la consulta según los atributos fecha, producto y cantidad vendida y calcular el total de ventas por cada combinación posible 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 ocho filas

  • Una para el total de ventas por fecha, producto y cantidad vendida
  • Una para el total de ventas por fecha y cantidad vendida
  • Una para el total de ventas por fecha y producto
  • Una para el total de ventas por producto y cantidad vendida
  • Una para el total de ventas por cantidad vendida
  • Una para el total de ventas por fecha
  • Una para el total de ventas por producto
  • 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
NULL camisa NULL 55
NULL NULL 10 10

☑️ Programar en SQL