Transcript
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 1/20
Mejoras de la CláusulaGROUP BY
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 2/20
17-2
Objetivos
Al finalizar esta lección, debería estar capacitadopara:
• Utilizar la operación ROLLUP para producir
valores subtotales
• Utilizar la operación CUBE para producir valores de
tabulación cruzada
• Utilizar la función GROUPING para identificar los valoresde fila creados por ROLLUP o CUBE
•Utilizar GROUPING SETS para producir un único juegode resultados
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 3/20
17-3
Revisión de Funciones de Grupo
Las funciones de grupo operan en juegos de filas paraproporcionar un resultado por grupo.
SELECT [column,] group_function(column). . .
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];
SELECT AVG(salary), STDDEV(salary),
COUNT(commission_pct),MAX(hire_date)
FROM employees
WHERE job_id LIKE 'SA%';
Ejemplo:
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 4/20
17-4
Revisión de la Cláusula GROUP BY
SELECT department_id, job_id, SUM(salary),COUNT(employee_id)
FROM employees
GROUP BY department_id, job_id ;
SELECT [column,]
FROM table
[WHERE condition]
[GROUP BY group_by_expression][ORDER BY column];
Ejemplo:
Sintaxis:
group_function(column). . .
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 5/20
17-5
Revisión de la Cláusula HAVING
• Utilice la cláusula HAVING para especificar qué grupos
se van a mostrar.
• Restringe aún más los grupos basándose en una
condición limitadora.
SELECT [column,] group_function(column)...
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[HAVING having_expression]
[ORDER BY column];
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 6/20
17-6
GROUP BY con operadores
CUBE y ROLLUP
• Utilice ROLLUP o CUBE con GROUP BY para producir filas
superagregadas realizando referencias cruzadas decolumnas.
•El agrupamiento ROLLUP produce un juego deresultados que contiene las filas agrupadas normales ylos valores subtotales.
• El agrupamiento CUBE produce un juego de resultadosque contiene las filas de ROLLUP y las de tabulación
cruzada.
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 7/2017-7
Operador ROLLUP
• ROLLUP es una extensión de la cláusula GROUP BY.
• Utilice la operación ROLLUP para producir agregados
acumulativos como, por ejemplo, subtotales.
SELECT [column,] group_function(column). . .
FROM table
[WHERE condition]
[GROUP BY [ROLLUP] group_by_expression]
[HAVING having_expression];
[ORDER BY column];
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 8/2017-8
Ejemplo de Operator ROLLUP
SELECT department_id, job_id, SUM(salary)FROM employees
WHERE department_id < 60GROUP BY ROLLUP(department_id, job_id);
12
3
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 9/2017-9
Operador CUBE
• CUBE es una extensión de la cláusula GROUP BY.
• Puede utilizar el operador CUBE para producir valores
de tabulación cruzada con una única sentencia SELECT.
SELECT [column,] group_function(column)...
FROM table
[WHERE condition]
[GROUP BY [CUBE] group_by_expression]
[HAVING having_expression][ORDER BY column];
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 10/2017-10
Ejemplo de Operador CUBE
SELECT department_id, job_id, SUM(salary)
FROM employees WHERE department_id < 60
GROUP BY CUBE (department_id, job_id) ;
1
2
3
4
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 11/2017-11
Función GROUPING
• La función GROUPING se puede utilizar tanto con eloperador ROLLUP como con CUBE.
• Mediante la función GROUPING, puede encontrar los
grupos que forman el subtotal en una fila.
• Mediante la función GROUPING, puede diferenciar losvalores NULL almacenados de los valores NULL creadospor ROLLUP o CUBE.
• La función GROUPING devuelve 0 ó 1.
SELECT [column,] group_function(column) . ,
GROUPING(expr)FROM table
[WHERE condition]
[GROUP BY [ROLLUP][CUBE] group_by_expression][HAVING having_expression]
[ORDER BY column];
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 12/2017-12
Ejemplo de Función GROUPING
SELECT department_id DEPTID, job_id JOB,
SUM(salary),
GROUPING(department_id) GRP_DEPT,
GROUPING(job_id) GRP_JOB
FROM employees
WHERE department_id < 50
GROUP BY ROLLUP(department_id, job_id);
21
3
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 13/2017-13
GROUPING SETS
• GROUPING SETS es otra extensión de la cláusula GROUP BY.
• Puede utilizar GROUPING SETS para definir varios
agrupamientos en la misma consulta.
• Oracle Server calcula todos los agrupamientosespecificados en la cláusula GROUPING SETS y combina los
resultados de agrupamientos individuales con unaoperación UNION ALL.
• Eficacia del juego de agrupamientos:
– Solamente se necesita una transferencia a la tabla
base. – No es necesario escribir sentencias UNION complejas.
– Cuantos más elementos tenga GROUPING SETS, mayor
será el beneficio en el rendimiento.
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 14/2017-15
Ejemplo de GROUPING SETS
SELECT department_id, job_id, manager_id,avg(salary)
FROM employeesGROUP BY GROUPING SETS
((department_id,job_id), (job_id,manager_id));
1
2
…
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 15/2017-17
Columnas Compuestas
• Una columna compuesta es una recopilación decolumnas que se tratan como una unidad.
ROLLUP (a, , d)
• Para especificar columnas compuestas, utilice lacláusula GROUP BY para agrupar las columnas entre
paréntesis para que Oracle Server las trate como unaunidad mientras calcula operaciones CUBE o ROLLUP.
• Al utilizar columnas compuestas con ROLLUP o CUBE, se
ignoran agregados en ciertos niveles.
(b,c)
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 16/2017-19
Ejemplo de Columnas Compuestas
SELECT department_id, job_id, manager_id,
SUM(salary)
FROM employees
GROUP BY ROLLUP( department_id,(job_id, manager_id));
21
3…
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 17/2017-21
Agrupamientos Concatenados
• Los agrupamientos concatenados ofrecen una maneraconcisa de generar combinaciones útiles deagrupamientos.
• Para especificar juegos de agrupamientos
concatenados, separe varios juegos deagrupamientos y operaciones CUBE y ROLLUP con
comas para que Oracle Server los 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)
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 18/2017-22
…
…
…
Ejemplo de Agrupamientos Concatenados
SELECT department_id, job_id, manager_id,
SUM(salary)FROM employees
GROUP BY department_id,
ROLLUP(job_id),
CUBE(manager_id);
…
…
…
1
2
3
4
7/25/2019 Les17 Group Byf
http://slidepdf.com/reader/full/les17-group-byf 19/2017-23
Resumen
En esta lección, debería haber aprendido a:• Utilizar la operación ROLLUP para producir
valores subtotales
• Utilizar la operación CUBE para producir valores de
tabulación cruzada
• Utilizar la función GROUPING para identificar los valoresde fila creados por ROLLUP o CUBE
• Utilizar la sintaxis GROUPING SETS para definir varios
agrupamientos en la misma consulta
• Utilizar la cláusula GROUP BY para combinar expresiones
de varias formas:
– Columnas compuestas
– Juegos de agrupamientos concatenados
top related