02.-Subcláusula CUBE
PostgreSQL CUBE es una subcláusula de la cláusula GROUP BY. CUBE le permite generar múltiples conjuntos de agrupación.
Un conjunto de agrupación es un conjunto de columnas a las que se desea agrupar.
A continuación se ilustra la sintaxis de la subcláusula CUBE:
SELECT
c1,
c2,
c3,
aggregate (c4)
FROM
table_name
GROUP BY
CUBE (c1, c2, c3);
En esta sintaxis:
- Primero, especifique la subcláusula
CUBEen la cláusulaGROUP BYde la sentenciaSELECT. - Segundo, en la lista de selección, especifique las columnas (dimensiones o columnas de dimensión) que desea analizar y las expresiones aggregation function.
- En tercer lugar, en la cláusula
GROUP BY, especifique las columnas de dimensión dentro de los paréntesis de la subcláusulaCUBE.
La consulta genera todos los posibles conjuntos de agrupación basados en las columnas de dimensión especificadas en CUBE. La subcláusula CUBE es una forma abreviada de definir varios conjuntos de agrupación, por lo que las siguientes son equivalentes:
CUBE(c1,c2,c3)
GROUPING SETS (
(c1,c2,c3),
(c1,c2),
(c1,c3),
(c2,c3),
(c1),
(c2),
(c3),
()
)
En general, si el número de columnas especificadas en el CUBO es n, entonces tendrá 2^n combinaciones.
PostgreSQL le permite realizar un cubo parcial para reducir el número de agregados calculados. A continuación se muestra la sintaxis:
SELECT
c1,
c2,
c3,
aggregate (c4)
FROM
table_name
GROUP BY
c1,
CUBE (c1, c2);
Ejemplos de CUBE¶
Utilizaremos la tabla sales creada en el tutorial GROUPING SETS para la demostración.

La siguiente consulta utiliza la subcláusula CUBE para generar múltiples conjuntos de agrupación:
SELECT
brand,
segment,
SUM (quantity)
FROM
sales
GROUP BY
CUBE (brand, segment)
ORDER BY
brand,
segment;
Este es el resultado:

La siguiente consulta realiza un cubo parcial:
SELECT
brand,
segment,
SUM (quantity)
FROM
sales
GROUP BY
brand,
CUBE (segment)
ORDER BY
brand,
segment;

En este tutorial, ha aprendido a utilizar el CUBE de PostgreSQL para generar múltiples conjuntos de agrupación.