Está en la página 1de 10

BASE DE DATOS

APLICADA

LABORATORIO N° 06

USO DE SUBCONSULTAS PARA


RESOLVER CONSULTAS
CÓDIGO DEL CURSO: R66417

Alumno(s) Dayana Arapa Anco Nota

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

● Hacer uso de subconsultas para resolver consultas complejas.


● Hacer uso de JOINS en conjunto con subconsultas.

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.

III. NORMAS EMPLEADAS

● No aplica

IV. RECURSOS

● Equipo con sistema operativo Windows (64 bits).


● VMWare Workstation (opcional).
● Oracle Express Universal 11g XE instalado (opcional).
● Oracle SQL Developer instalado (opcional).
● Conexión a internet y navegador web (prueba de sentencias mediante Oracle Live SQL)

V. METODOLOGÍA PARA EL DESARROLLO DE LA TAREA

● El desarrollo del laboratorio es de manera individual.


Nro. DD-106
Laboratorio de Base de Datos
Uso de Subconsultas Para Resolver Consultas Página 2

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.

B. Abrir SQL Developer

1. Inicie la herramienta SQL Developer.


2. Iniciar sesión empleando la cuenta de usuario System.
3. En el panel derecho se mostrará una ficha con una ventana de comandos con el
nombre de su conexión. Dicha ventana permite ingresar comandos SQL en forma
escrita.

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?

select employee_id, last_name, job_id


from hr.employees
where job_id = (
select job_id
from hr.employees
where employee_id = 103);
Nro. DD-106
Laboratorio de Base de Datos
Uso de Subconsultas Para Resolver Consultas Página 3

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);

3. La siguiente consulta devuelve SQL devuelve un listado de empleados que tienen un


salario inferior al salario promedio.

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

Defina sentencias SQL que cumplan con lo requerido.

1. Obtener un listado de salarios mínimo, promedio y máximo por departamento con la


condición que el valor del salario máximo sea diferente del valor del salario mínimo.

SELECT DEPARTMENT_NAME, MAXIMO,PROM,MINIMO


FROM HR.DEPARTMENTS
JOIN (
SELECT DEPARTMENT_ID, MAX(SALARY) AS MAXIMO,
AVG(SALARY) AS PROM, MIN(SALARY) AS MINIMO
FROM HR.EMPLOYEES
GROUP BY DEPARTMENT_ID
)
USING (DEPARTMENT_ID)
WHERE MÁXIMO<>MÍNIMO;
Nro. DD-106
Laboratorio de Base de Datos
Uso de Subconsultas Para Resolver Consultas Página 6

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.

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;
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;

4. Implemente un listado de los departamentos donde la cantidad de empleados que


ganan por debajo del promedio en su departamento sea mayor a la cantidad de
trabajadores que ganan un salario mayor al promedio:

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:

El operador de unión elimina las filas duplicadas cuando combina los


resultados de las consultas implicadas.

El operador union devuelve sólo las filas distintas que aparecen en


ambas tablas.
UNION ALL

Si no nos importa que haya registro repetidos, los duplicados se


mantienen.
INTERSECT:

Devuelve sólo las filas que aparecen en ambas consultas.


MINUS:

Devuelve solo los elementos de la primera consulta que no se


encuentren en la segunda.
Nro. DD-106
Laboratorio de Base de Datos
Uso de Subconsultas Para Resolver Consultas Página 9

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

● también existen varias subconsultas de varias columnas, que son


consultas que devuelven más de una columna de la sentencia SELECT
interna.

VIII. CONCLUSIONES

● Se puede escribir subconsultas en la cláusula WHERE de otra sentencia


SQL para obtener los valores basados en un valor condicional desconocido.
Esta lección también cubre subconsultas de un registro o subconsultas de
varios registros.
● cláusula HAVING con subconsultas Subconsultas de múltiples registros
utilizar el operador IN que desea escribir una consulta para saber quién
gana un salario mayor que el salario del empleado, necesitaremos dos
consultas, una para saber cuánto gana el empleado y una segunda
consulta para saber quién gana más de esa cantidad realizamos la
combinación de las dos consultas, la colocación de una consulta dentro de
la otra consulta.
● Al implementar una sentencia en SQL que nos permita tener un listado
de los empleados pedidos por el laboratorio realizamos la subconsulta en
Cláusula WHERE.

También podría gustarte