jueves, 17 de noviembre de 2016

CUBE


El operador CUBE es un conmutador adicional de la cláusula GROUP BY de una sentencia SELECT. El operador CUBE se puede aplicar a todas las funciones agregadas, incluidas AVG, SUM, MAX, MIN y COUNT. Se utiliza para generar juegos de resultados que se suelen utilizar para informes de datos derivados de varias tablas. Mientras que ROLLUP genera sólo una fracción de posibles combinaciones de subtotales, CUBE genera subtotales para todas las posibles combinaciones de agrupamientos especificados en la cláusula GROUP BY y una suma total. 

El operador CUBE se utiliza con una función agregada para generar filas adicionales en un juego de resultados. Las columnas incluidas en la cláusula GROUP BY son de referencia cruzada y se utilizan para generar un superjuego de grupos. La función agregada especificada en la lista de selecciones se aplica a estos grupos para generar valores de resumen para las filas superagregadas adicionales. El número de grupos adicionales del juego de resultados lo determina el número de columnas incluidas en la cláusula GROUP BY

De hecho, todas las posibles combinaciones de las columnas o las expresiones de la cláusula GROUP BY se utilizan para generar superagregados. Si tiene n columnas o expresiones en la cláusula GROUP BY, habrá 2n posibles combinaciones superagregadas. Matemáticamente, estas combinaciones forman un cubo de n dimensiones, de ahí el nombre del operador. 
Mediante la aplicación o herramientas de programación, estos valores superagregados se pueden proporcionar a diagramas y gráficos que expresarán los resultados y las relaciones eficazmente y de forma visual. 

CUBE es una extensión de la cláusula GROUP BY. 
Puede utilizar el operador CUBE para generar valores desde varias tablas con una única sentencia SELECT. 



Ejemplo de un Operador CUBE 

La salida de la sentencia SELECT del ejemplo se puede interpretar así: 

El salario total de todos los puestos dentro de un departamento (para los departamentos cuyo identificador es menor que 60) se muestra mediante la cláusula GROUP BY. 
Salario total de los departamentos cuyo identificador es menor que 60. 
Salario total de todos los puestos, independientemente del departamento. 
Salario total de los departamentos cuyo identificador es menor que 60, independientemente de los cargos. 

En este ejemplo, 1 indica la suma total. 2 indica las filas totalizadas sólo por JOB_ID. 3 indica algunas de las filas totalizadas por DEPARTMENT_ID y JOB_ID. 4 indica algunas de las filas totalizadas sólo por DEPARTMENT_ID. 

El operador CUBE también ha realizado la operación ROLLUP para mostrar los subtotales de los departamentos cuyo identificador es menor que 60 y el salario total de los de los departamentos cuyo identificador es menor que 60, independientemente de los cargos. Además, el operador CUBE muestra el salario total de todos los puestos, independientemente del departamento. 

Nota: De forma parecida al operador ROLLUP, para generar subtotales en n dimensiones (es decir, n columnas de la cláusula GROUP BY) sin un operador CUBE, se deben enlazar 2n sentencias SELECT con UNION ALL. Así pues, un informe de tres dimensiones requiere que se enlacen 23 = 8 sentencias SELECT con UNION ALL. 

Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?