La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Mejoras a la Cláusula GROUP BY

Presentaciones similares


Presentación del tema: "Mejoras a la Cláusula GROUP BY"— Transcripción de la presentación:

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

2 Universidad del Cauca – FIET – Departamento de Sistemas
Objetivos 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 Universidad del Cauca – FIET – Departamento de Sistemas

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

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

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

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

7 GROUP BY con ROLLUP y CUBE
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 Universidad del Cauca – FIET – Departamento de Sistemas

8 Universidad del Cauca – FIET – Departamento de Sistemas
Operador ROLLUP SELECT [Columna,] FuncionDeGrupo (Expresión), … FROM Tabla [WHERE Condición] [GROUP BY [ROLLUP] ExpresiónDeGrupo] [HAVING CondiciónDeGrupo] [ORDER BY Columna]; 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 Universidad del Cauca – FIET – Departamento de Sistemas

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

10 Universidad del Cauca – FIET – Departamento de Sistemas
Operador ROLLUP Dep_Id 30 20 10 S G A V O P Pu Emp_Cargo Universidad del Cauca – FIET – Departamento de Sistemas

11 Universidad del Cauca – FIET – Departamento de Sistemas
Operador CUBE SELECT [Columna,] FuncionDeGrupo (Expresión), … FROM Tabla [WHERE Condición] [GROUP BY [CUBE] ExpresiónDeGrupo] [HAVING CondiciónDeGrupo] [ORDER BY Columna]; 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 2N 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 Universidad del Cauca – FIET – Departamento de Sistemas

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

13 Universidad del Cauca – FIET – Departamento de Sistemas
Operador CUBE Dep_Id 30 20 10 S G A V O P Pu Emp_Cargo Universidad del Cauca – FIET – Departamento de Sistemas

14 Universidad 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] [HAVING CondiciónDeGrupo] [ORDER BY Columna]; 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) Universidad del Cauca – FIET – Departamento de Sistemas

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

16 Universidad del Cauca – FIET – Departamento de Sistemas
GROUPING SETS 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 Universidad del Cauca – FIET – Departamento de Sistemas

17 Universidad del Cauca – FIET – Departamento de Sistemas
GROUPING SETS CUBE (a, b, c) es equivalente a GROUPING SETS ( (a, b, c), (a, b), (a, c), (b, c), (a), (b), (c), ()) ROLLUP (a, b, c) es equivalente a (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 Universidad del Cauca – FIET – Departamento de Sistemas

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

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

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

21 Universidad del Cauca – FIET – Departamento de Sistemas
Columnas compuestas 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) Universidad del Cauca – FIET – Departamento de Sistemas

22 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) ((a, b, c), (a, b), (c), ()) GROUP BY GROUPING SETS SELECT … GROUP BY a UNION ALL SELECT … GROUP BY b SELECT … GROUP BY c ((a, b, c)) GROUP BY a, b, c (a, (b), ()) SELECT … GROUP BY () Universidad del Cauca – FIET – Departamento de Sistemas

23 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), () ) 1 2 1 1 2 3 2 1 2 3 Universidad del Cauca – FIET – Departamento de Sistemas

24 Universidad del Cauca – FIET – Departamento de Sistemas
Grupos concatenados 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) Universidad del Cauca – FIET – Departamento de Sistemas

25 Universidad 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) 1 2 1 3 4 3 Universidad del Cauca – FIET – Departamento de Sistemas

26 Universidad 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) 1 2 2 3 4 4 2 4 2 4 Universidad del Cauca – FIET – Departamento de Sistemas

27 Universidad 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 Dep_Id, Emp_Jefe Dep_Id Universidad del Cauca – FIET – Departamento de Sistemas

28 Universidad del Cauca – FIET – Departamento de Sistemas
Resumen 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) Universidad del Cauca – FIET – Departamento de Sistemas

29 Universidad del Cauca – FIET – Departamento de Sistemas
Practica 16 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 Universidad del Cauca – FIET – Departamento de Sistemas


Descargar ppt "Mejoras a la Cláusula GROUP BY"

Presentaciones similares


Anuncios Google