jueves, 17 de noviembre de 2016

COLUMNAS COMPUESTAS

Columnas Compuestas: Ejemplo
Observe el ejemplo:  
  SELECT department_id, job_id,manager_id, SUM(salary)
   FROM   employees    
   GROUP BY ROLLUP( department_id,job_id, manager_id);
Esta consulta hace que Oracle Server calcule los siguientes agrupamientos:
1.  (job_id, manager_id)
2.  (department_id, job_id, manager_id)
3.  (department_id)
4.  Suma total

Si sólo le interesan grupos específicos, no puede limitar el cálculo a esos agrupamientos sin utilizar columnas compuestas. Con las columnas compuestas, esto es posible si se trata las columnas JOB_ID y MANAGER_ID como una unidad durante la acumulación. Las columnas entre paréntesis se tratan como una unidad durante los cálculos ROLLUP y CUBE. Esto se ilustra en el ejemplo de la diapositiva. Al poner las columnas JOB_ID y MANAGER_ID entre paréntesis, le indica a Oracle Server que trate JOB_ID y MANAGER_ID como una unidad, que es una columna compuesta.
Columnas Compuestas: Ejemplo (continuación)
El ejemplo de la diapositiva calcula los siguientes agrupamientos:
(department_id, job_id, manager_id)
(department_id)
( )
El ejemplo de la diapositiva muestra lo siguiente:
Salario total de todos los puestos y supervisor (etiquetado como 1)
Salario total de todos los departamentos, los puestos y los supervisores (etiquetado
como 2)
Salario total de todos los departamentos (etiquetado como 3)
Suma total (etiquetado como 4)
El ejemplo de la diapositiva también se puede escribir como:
 SELECT  department_id, job_id, manager_id, SUM(salary)
FROM    employees    
GROUP    BY department_id,job_id, manager_id
UNION    ALL
SELECT   department_id, TO_CHAR(NULL),TO_NUMBER(NULL), SUM(salary)
FROM     employees    
GROUP BY  department_id
UNION ALL
SELECT  TO_NUMBER(NULL), TO_CHAR(NULL),TO_NUMBER(NULL), SUM(salary)
FROM    employees    
GROUP BY ();
En ausencia de un optimizador que busque en los bloques de consulta para generar el plan de ejecución, la consulta anterior necesitaría tres exploraciones de la tabla base, EMPLOYEES. Esto podría resultar muy ineficiente. Por tanto, se recomienda utilizar columnas compuestas.

Columnas Concatenadas
Los agrupamientos concatenados ofrecen una forma concisa de generar combinaciones de agrupamientos útiles. Para especificar los agrupamientos concatenados, se muestran varios juegos de agrupamientos, cubos y acumulaciones, y se separan con comas. A continuación se ofrece un ejemplo de juegos de agrupamientos concatenados:
GROUP BY GROUPING SETS(a, b), GROUPING SETS(c, d)
Este ejemplo SQL define los siguientes agrupamientos:
(a, c), (a, d), (b, c), (b, d)
La concatenación de juegos de agrupamientos es muy útil por estos motivos:
Facilidad de desarrollo de consultas: No es necesario enumerar manualmente todos los agrupamientos.
Uso por las aplicaciones: El SQL generado por aplicaciones OLAP suele implicar la concatenación de juegos de agrupamientos, en la que cada juego de agrupamientos define los agrupamientos necesarios para una dimensión.

Los agrupamientos concatenados ofrecen una forma concisa de generar combinaciones de agrupamientos útiles. Para especificar los juegos de agrupamientos concatenados, separe varias operaciones ROLLUP, CUBE y juegos de agrupamientos con comas, de modo que Oracle Server las combine en una única cláusula GROUP BY. El resultado es un producto combinado de agrupamientos de cada juego de agrupamientos.

GROUP BY GROUPING SETS(a, b), GROUPING SETS(c, d)




Agrupamientos Concatenados: Ejemplo
El ejemplo de la diapositiva da como resultado los siguientes agrupamientos:
(job_id, manager_id) (1)
(department_id,job_id, manager_id) (2)
(job_id)(3)
(department_id,manager_id)(4)
(department_id) (5)

Se calcula el salario total de cada uno de estos grupos.
Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?