Laboratorio 06 - Uso de Subconsultas
Laboratorio 06 - Uso de Subconsultas
APLICADA
LABORATORIO N° 06
Especialidad y
Redes y Comunicaciones de Datos Fecha
Grupo
Nro. DD-106
Laboratorio de Base de Datos
Uso de Subconsultas Para Resolver Consultas Página 1
I. OBJETIVOS
II. SEGURIDAD
Advertencia:
En este laboratorio está prohibida la manipulación de hardware, conexiones
eléctricas o de red; así como la ingestión de alimentos o bebidas.
● No aplica
IV. RECURSOS
VI. PROCEDIMIENTO
A. Inicie el Equipo virtual (Si se emplea Oracle Live SQL, obviar los puntos A y B)
1. Inicie VMware Workstation.
2. Inicie una máquina virtual que contenga Oracle instalado.
C. Subconsultas
Elija algún empleado de la tabla EMPLOYEES del esquema HR y desarrolle las siguientes
consultas sobre sobre él.
1. ¿Cuáles son los empleados que tienen el mismo puesto de trabajo que el empleado
seleccionado?
2. ¿Cuáles son los empleados que tienen un sueldo superior al sueldo del empleado
seleccionado?
select employee_id, last_name, salary
from hr.employees
where salary > (
select salary
from hr.employees
where employee_id = 101);
4. Implementar una consulta SQL que devuelva el listado de empleados que tienen un
salario superior al salario promedio:
select first_name last_name, salary
from hr.employees
where salary > (
select avg(salary)
from hr.employees
);
Nro. DD-106
Laboratorio de Base de Datos
Uso de Subconsultas Para Resolver Consultas Página 4
5. Implementar una sentencias SQL que permita obtener un listado de todos los
empleados que no están laborando en EEUU:
SELECT FIRST_NAME, LAST_NAME, COUNTRY_ID
FROM HR.EMPLOYEES
JOIN (
SELECT DEPARTMENT_ID, LOCATION_ID
FROM HR.DEPARTMENTS)
USING (DEPARTMENT_ID)
JOIN (
SELECT COUNTRY_ID, LOCATION_ID
FROM HR.LOCATIONS)
USING (LOCATION_ID)
WHERE COUNTRY_ID <> 'US';
6. Implementar una sentencia SQL que permita obtener un listado de todos los empleados
que no sean gerentes (manager):
SELECT LAST_NAME, JOB_ID
FROM HR.EMPLOYEES
WHERE JOB_ID IN (
SELECT JOB_ID
FROM HR.JOBS
WHERE JOB_TITLE NOT LIKE ('%MANAGER%')
);
Nro. DD-106
Laboratorio de Base de Datos
Uso de Subconsultas Para Resolver Consultas Página 5
D. Miscelánea
2. Obtener un listado de empleados por departamento con la condición que el valor del
salario del trabajador sea mayor al salario promedio del departamento donde trabaja.
USING (DEPARTMENT_ID)
WHERE SALARY > 'PROMEDIO'
ORDER BY 3;
Nro. DD-106
Laboratorio de Base de Datos
Uso de Subconsultas Para Resolver Consultas Página 7
3. Modifique el listado anterior para obtener una lista de empleados por departamento con
la condición que el valor del salario del empleado sea menor al salario promedio del
departamento al cual pertenece:
SELECT 'EMPLEADO', SALARY 'SALARIO', DEPARTMENT_NAME
'DEPARTAMENTO', 'MINIMO', 'PROMEDIO', 'MAXIMO'
FROM HR.DEPARTMENTS
JOIN (
SELECT DEPARTMENT_ID, MIN(SALARY) 'MINIMO',round(AVG(SALARY),2)
'PROMEDIO',MAX(SALARY)'MAXIMO'
FROM HR.EMPLOYEES
GROUP BY DEPARTMENT_ID
)
USING (DEPARTMENT_ID)
JOIN (
SELECT LAST_NAME ||' '|| FIRST_NAME 'EMPLEADO', SALARY,
DEPARTMENT_ID
FROM HR.EMPLOYEES
)
USING (DEPARTMENT_ID)
WHERE SALARY < 'PROMEDIO'
ORDER BY 3;
5. Visualizar los nombres de las personas que cumplen la condición del ejercicio anterior y
que están por debajo del promedio de salario por departamento.
Nro. DD-106
Laboratorio de Base de Datos
Uso de Subconsultas Para Resolver Consultas Página 8
E. Tarea
Investigar sobre las ventajas y aplicaciones que tienen los operadores de conjunto
(UNION/UNION ALL, INTERSECT, MINUS)
UNION:
VII. OBSERVACIONES
● Si omite ORDER BY por defecto, la salida se ordenará en orden ascendente
según employee_id no se puede utilizar las columnas de la segunda
consulta para ordenar la salida
VIII. CONCLUSIONES