Laboratorio 6.3.9 Uso de extensiones en la cláusula GROUP BY

Anuncio
Actividad Práctica - Laboratorio 6.3.9
Uso de extensiones en la cláusula GROUP BY
Objetivos: Entender los niveles de agrupamiento formados por CUBE y ROLLUP. Diferenciar
programáticamente filas regulares y filas superagregadas. Comprender la sintaxis de
extensiones a la cláusula GROUP BY.
Duración estimada: 45 min
Descripción:
1. Dada la siguiente consulta:
SELECT ALL
c.country_name, l.city,
AVG(e.salary) SALARIO_PROMEDIO
FROM hr.employees e,
hr.departments d,
hr.locations l,
hr.countries c
WHERE e.department_id = d.department_id
AND d.location_id = l.location_id
AND l.country_id = c.country_id
GROUP BY c.country_name, l.city;
Agregue una fila de subtotales por país y una fila de total general al final utilizando
extensiones a la cláusula GROUP BY. Para las filas de subtotales mostrar el texto
“Subtotal”, y para la fila de total general mostrar “Total General”.
2. Dada la siguiente consulta:
SELECT
FROM
WHERE
UNION
SELECT
FROM
WHERE
e.last_name, e.salary
hr.employees e
e.manager_id = 101
ALL
'Total', sum(e.salary)
hr.employees e
e.manager_id = 101;
a) Rescribir la consulta para reemplazar el total general calculado con el operador
UNION ALL por una fila de total general calculada utilizando ROLLUP.
b) Idem punto a) pero utilizando GROUPING SETS.
3. Además de los totales regulares, la siguiente consulta muestra subtotales por país,
ciudad y por departamento.
SELECT ALL
c.country_name, l.city, d.department_name,
AVG(e.salary) SALARIO_PROMEDIO
FROM hr.employees e,
hr.departments d,
hr.locations l,
HR.COUNTRIES c
WHERE e.department_id = d.department_id
2008 - Prohibida su reproducción
AND d.location_id = l.location_id
AND l.country_id = c.country_id
GROUP BY CUBE(c.country_name, l.city, d.department_name);
Rescriba la consulta para mostrar únicamente:
1. Filas agregadas regulares
2. Filas de subtotales por país
3. Filas de subtotales por departamento en la ciudad correspondiente
4. Total general
2008 - Prohibida su reproducción
Descargar