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
CUBE
en la cláusulaGROUP BY
de 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.