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 |