La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 16 Mejoras a la Cláusula GROUP BY.

Presentaciones similares


Presentación del tema: "Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 16 Mejoras a la Cláusula GROUP BY."— Transcripción de la presentación:

1 Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 16 Mejoras a la Cláusula GROUP BY

2 16-2Universidad del Cauca – FIET – Departamento de Sistemas Después de este capítulo, usted estará en capacidad de: Usar la operación ROLLUP para producir subtotales de grupos Usar la operación CUBE para producir subtotales en tabulación cruzada Usar la función GROUPING para identificar los valores creados con ROLLUP y CUBE Usar la cláusula GROUPING SETS para producir múltiples conjuntos de resultados en una consulta simple Objetivos

3 16-3Universidad del Cauca – FIET – Departamento de Sistemas Revisión de las funciones de grupo SELECT[Columna,] FuncionDeGrupo (Expresión), … FROM Tabla [WHERE Condición] [GROUP BYExpresiónDeGrupo] [ORDER BYColumna];

4 16-4Universidad del Cauca – FIET – Departamento de Sistemas Revisión de las funciones de grupo

5 16-5Universidad del Cauca – FIET – Departamento de Sistemas Revisión de la cláusula HAVING SELECT[Columna,] FuncionDeGrupo (Expresión), … FROM Tabla [WHERE Condición] [GROUP BYExpresiónDeGrupo] [HAVINGCondiciónDeGrupo] [ORDER BYColumna]; El orden de ejecución de las cláusulas es el siguiente: 1. Se toma la fuente de datos con la cláusula FROM 2. Se excluyen las filas que no cumplen con la condición de la cláusula WHERE 3. Se arman los grupos de acuerdo a las columnas de la cláusula GROUP BY 4. Se aplican las Funciones de Grupo que están en la cláusula SELECT a los grupos previamente formados 5. Se excluyen los grupos que no cumplen con la condición de la cláusula HAVING 6. Se ordenan los resultados conforme se establece en la cláusula ORDER BY

6 16-6Universidad del Cauca – FIET – Departamento de Sistemas Revisión de la cláusula HAVING Empleados

7 16-7Universidad del Cauca – FIET – Departamento de Sistemas Los operadores ROLLUP Y CUBE se usan en la cláusula GROUP BY para producir filas de datos con subtotales de datos por grupos y por filas de grupos ROLLUP muestra el resultado de la cláusula GROUP BY y adicionalmente subtotales por cada grupo resultante CUBE muestra el resultado de ROLLUP y adicionalmente subtotales por filas de grupos (subtotales en tabulación cruzada) Es preciso asegurarse de que los datos resultantes tienen sentido, de lo contrario se producirá información irrelevante Estos operadores están disponibles desde Oracle 8i en adelante GROUP BY con ROLLUP y CUBE

8 16-8Universidad del Cauca – FIET – Departamento de Sistemas Operador ROLLUP SELECT[Columna,] FuncionDeGrupo (Expresión), … FROM Tabla [WHERE Condición] [GROUP BY[ROLLUP] ExpresiónDeGrupo] [HAVINGCondiciónDeGrupo] [ORDER BYColumna]; ROLLUP es una extensión de la cláusula GROUP BY. Se usa para mostrar estadísticas o resumen de información empresarial Los resultados de un ROLLUP normalmente se usan para escribir reportes tabulares, de barras o gráficos Un operador ROLLUP que produce N subtotales (dimensiones) equivale a N-1 sentencias SELECT que se relacionan con el operador de conjunto UNION ALL, pero es más eficiente Dadas N expresiones (o columnas del GROUP BY) el operador ROLLUP genera N+1 grupos

9 16-9Universidad del Cauca – FIET – Departamento de Sistemas Operador ROLLUP Total grupo Dep_Id = 10 Total grupo Dep_Id = 20 Total grupo Dep_Id = 30 Total de todos los grupos Fila super- agregada Se usan 2 expresiones y se generan 2+1 (3) grupos de resultados (filas normales, totales por departamento y gran total)

10 16-10Universidad del Cauca – FIET – Departamento de Sistemas Operador ROLLUP GAVOPPu S Dep_Id Emp_Cargo

11 16-11Universidad del Cauca – FIET – Departamento de Sistemas Operador CUBE SELECT[Columna,] FuncionDeGrupo (Expresión), … FROM Tabla [WHERE Condición] [GROUP BY[CUBE] ExpresiónDeGrupo] [HAVINGCondiciónDeGrupo] [ORDER BYColumna]; CUBE es una extensión de la cláusula GROUP BY. Se usa para mostrar estadísticas o resumen de información empresarial con totales tabulados en forma cruzada Cada posible combinación de columnas se usa par producir subtotales (filas superagregadas) Dadas N expresiones (o columnas del GROUP BY) el operador CUBE genera 2 N posibles combinaciones superagregadas (dimensiones). Matemáticamente, estas combinaciones forman un cubo N-dimensional. Estos cubos se pueden analizar con reportes de barras o gráficos

12 16-12Universidad del Cauca – FIET – Departamento de Sistemas Operador CUBE Total Dep_Id = 10 Total Dep_Id = 20 Total Dep_Id = 30 Total de todos los grupos Totales por cargo Se usan 2 expresiones y se generan 2 2 (4) grupos de resultados (filas normales, totales por departamento, totales por cargo y gran total)

13 16-13Universidad del Cauca – FIET – Departamento de Sistemas Operador CUBE GAVOPPu S Dep_Id Emp_Cargo

14 16-14Universidad del Cauca – FIET – Departamento de Sistemas Función GROUPING SELECT[Columna,] FuncionDeGrupo (Expresión), … GROUPING (ExpresiónDeGrupo) FROM Tabla [WHERE Condición] [GROUP BY[ROLLUP | CUBE] ExpresiónDeGrupo] [HAVINGCondiciónDeGrupo] [ORDER BYColumna]; La función GROUPING puede usarse con los operadores ROLLUP o CUBE Con esta función se puede distinguir fácilmente las filas del resultado que son súper agregaciones (dimensiones) Con esta función se distingue fácilmente los valores NULL resultados de la conformación del GRUPO, de los valores creados por los operadores ROLLUP o CUBE Esta función retorna cero (0) o uno (1)

15 16-15Universidad del Cauca – FIET – Departamento de Sistemas Función GROUPING Valores Nulos generados por ROLLUP

16 16-16Universidad del Cauca – FIET – Departamento de Sistemas GROUPING SETS son una extensión adicional de la cláusula GROUP BY Se usa para definir múltiples grupos en la misma consulta y facilitar el análisis de múltiples dimensiones Si no se usan los GROUPING SETS, se procesarían los grupos cada uno por aparte con GROUP BY y luego se combinan los resultados con un operador UNION ALL El uso de GROUPING SETS es eficiente debido a: Se realiza una sola pasada por las tablas requeridas para obtener los resultados El usuario no necesita realizar complejas operaciones UNION Entre más conjuntos de grupos se nota más la eficiencia GROUPING SETS

17 16-17Universidad del Cauca – FIET – Departamento de Sistemas GROUPING SETS CUBE (a, b, c) es equivalente aGROUPING SETS ( (a, b, c), (a, b), (a, c), (b, c), (a), (b), (c), ()) ROLLUP (a, b, c) es equivalente aGROUPING SETS ( (a, b, c), (a, b), (a), ()) Para calcular el grupo () con dos expresiones se realiza una consulta similar a: SELECT NULL, NULL, Sum(Emp_Salario) FROM Empleados GROUP BY (); Con este ejemplo se obtienen los super totales

18 16-18Universidad del Cauca – FIET – Departamento de Sistemas GROUPING SETS y ROLLUP

19 16-19Universidad del Cauca – FIET – Departamento de Sistemas GROUPING SETS y ROLLUP

20 16-20Universidad del Cauca – FIET – Departamento de Sistemas GROUPING SETS y ROLLUP

21 16-21Universidad del Cauca – FIET – Departamento de Sistemas Una columna compuesta es una colección de columnas que son tratadas como una unidad durante los cálculos de los grupos ROLLUP (a, (b, c), d) Cuando se usan columnas compuestas con los operadores ROLLUP, CUBE y GROUPING SETS permite saltar ciertos niveles de agregación cruzada Por ejemplo, GROUP BY ROLLUP (a, (b, c)) es equivalente a: GROUP BY ROLLUP (a, z) donde z=(b, c) GROUPING SETS ((a, z), (a), ()) GROUPING SETS ((a, b, c), (a), ()) Sin usar los paréntesis en el ejemplo, seria equivalente a: GROUPING SETS ( (a, b, c), (a, b), (a), ()) Es decir se elimina la combinación (a, b) Columnas compuestas

22 16-22Universidad del Cauca – FIET – Departamento de Sistemas Algunas equivalencias usando columnas compuestas GROUP BY ROLLUP (a, b, c) GROUP BY SETS ((a, b, c), (a, b), (a), ()) GROUP BY CUBE ((a, b), c) GROUP BY SETS ((a, b, c), (a, b), (c), ()) GROUP BY GROUPING SETS (a, b, c) SELECT … GROUP BY a UNION ALL SELECT … GROUP BY b UNION ALL SELECT … GROUP BY c GROUP BY GROUPING SETS ((a, b, c)) GROUP BY a, b, c GROUP BY GROUPING SETS (a, (b), ()) SELECT … GROUP BY a UNION ALL SELECT … GROUP BY b UNION ALL SELECT … GROUP BY ()

23 16-23Universidad del Cauca – FIET – Departamento de Sistemas Uso de columnas compuestas ROLLUP (a, (b, c)) es equivalente a: GROUPING SETS ((a, b, c), (a), ()) que en este caso es: GROUPING SETS ( (Dep_Id, Emp_cargo, Emp_Jefe), (Dep_Id), () )

24 16-24Universidad del Cauca – FIET – Departamento de Sistemas Los grupos concatenados ofrecen una forma concisa para generar combinaciones útiles de grupos, por ejemplo: GROUP BY GROUPING SETS (a, b), GROUPING SETS (c, d) que equivale a: (a, c), (a, d), (b, c), (b, d) Se pueden concatenar los operadores ROLLUP, CUBE y GROUPING SETS. Inclusive se puede usar la combinación de consultas Muy útil para aplicaciones OLAP (Online Analytic Processing) Grupos concatenados

25 16-25Universidad del Cauca – FIET – Departamento de Sistemas Grupos concatenados Retorna la suma de los salarios para los siguientes grupos: (Dep_Id, Emp_Cargo, Emp_Jefe) (Dep_Id, Emp_Cargo) (Dep_Id, Emp_Jefe) (Dep_Id)

26 16-26Universidad del Cauca – FIET – Departamento de Sistemas Grupos concatenados Retorna la suma de los salarios para los siguientes grupos: (Dep_Id, Emp_Cargo, Emp_Jefe) (Dep_Id, Emp_Cargo) (Dep_Id, Emp_Jefe) (Dep_Id)

27 16-27Universidad del Cauca – FIET – Departamento de Sistemas Grupos concatenados Dep_Id, ROLLUP (Emp_Cargo), CUBE (Emp_Jefe) Dep_Id, (Emp_Cargo, () ), (Emp_Jefe, () ) Las posibles concatenaciones son: Dep_Id, Emp_Cargo, Emp_Jefe Dep_Id, Emp_Cargo, () Dep_Id, (), Emp_Jefe Dep_Id, (), () Que se resumen en: Dep_Id, Emp_Cargo, Emp_Jefe Dep_Id, Emp_Cargo Dep_Id, Emp_Jefe Dep_Id

28 16-28Universidad del Cauca – FIET – Departamento de Sistemas En esta lección usted debió aprender a : Usar la operación ROLLUP para producir subtotales de grupos Usar la operación CUBE para producir subtotales en tabulación cruzada Usar la función GROUPING para identificar los valores creados con ROLLUP y CUBE Usar la cláusula GROUPING SETS para producir múltiples conjuntos de resultados en una consulta simple (equivalente al enfoque de UNION ALL) Usar la cláusula GROUP BY para combinar expresiones de varias formas: Columnas compuestas Concatenación de conjuntos de grupos (GROUPING SETS) Resumen

29 16-29Universidad del Cauca – FIET – Departamento de Sistemas Realizar una práctica de cinco (5) puntos que permite practicar: El uso del operador ROLLUP El uso del operador CUBE El uso de la función GROUPING El uso de GROUPING SETS Practica 16


Descargar ppt "Universidad del Cauca – FIET – Departamento de Sistemas CAPITULO 16 Mejoras a la Cláusula GROUP BY."

Presentaciones similares


Anuncios Google