Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ESQUEMA 1 Sistema RELACIONAL con 4 tablas cuyo significado es el de una base de datos de Proveedores
(Tabla S), Piezas (Tabla P), Proyectos (Tabla J) y la tabla que relaciona a los proveedores que suministran
ciertas cantidades de piezas a los proyectos (Tabla SPJ).
S = (S#, nomprov, domicilio, ciudad)
P = (P#, nompiez, color)
J = (J#, nomproy, duración, ciudad)
SPJ = (S#, P#, J#, cantidad)
donde S#, P# y J# son los códigos de los proveedores, piezas y proyectos respectivamente. Las claves de cada
tabla aparecen en negrita y subrayado
1. [0.5 ptos] ¿Qué permite obtener la siguiente consulta? (MARCAR LA(s) CORRECTAS)
SELECT DISTINCT P# FROM SPJ GROUP BY S# HAVING AVG (cantidad) > 320;
A) Obtener los p# de las piezas suministradas tales que la cantidad promedio sea mayor que 320.
B) Obtener los p# de las piezas suministradas a algún proyecto tales que la cantidad promedio
suministrada de esa pieza a ese proyecto sea mayor que 320.
C) Obtener los p# de las piezas cuyo promedio de suministro sea mayor que 320.
D) Ninguna de las anteriores.
2. [0.5 ptos] ¿Cual de las siguientes consultas en SQL contesta a la pregunta "Obtener los P# de las
piezas suministradas a algún proyecto tales que la cantidad media suministrada al mismo sea
mayor que 320" utilizando el ESQUEMA 1?
A) SELECT DISTINCT P# FROM SPJ GROUP BY P# WHERE AVG(cantidad) > 320;
B) SELECT DISTINCT P# FROM SPJ WHERE AVG(cantidad) > 320; GROUP BY P#
C) SELECT DISTINCT P# FROM SPJ GROUP BY P#, J# HAVING AVG(cantidad) > 320;
D) SELECT DISTINCT P# FROM SPJ GROUP BY J# HAVING AVG(cantidad) > 320;
3. [0.5 ptos] ¿Cuál de las siguientes consultas en SQL contesta a la pregunta "Obtener los S# de los
proveedores que suministren por lo menos alguna de las piezas suministradas por alguno de los
proveedores que suministran alguna pieza “ utilizando el ESQUEMA 1?.
A) SELECT DISTINCT S# FROM SPJ WHERE P# IN (SELECT P# FROM SPJ WHERE S# IN (SELECT S# FROM SPJ
WHERE P# IN (SELECT P# FROM P);
B) SELECT DISTINCT S# FROM SPJ WHERE P# IN (SELECT P# FROM P WHERE S# IN (SELECT S# FROM S
WHERE P# IN (SELECT P# FROM P);
C) SELECT DISTINCT S# FROM SPJ WHERE P# IN (SELECT P# FROM P);
D) Ninguna de las anteriores
4. [0.5 ptos] Utilizando el ESQUEMA 1. ¿Qué permite obtener la siguiente consulta?
SELECT DISTINCT j# FROM j WHERE ciudad=”Trujillo” AND s# IN (SELECT j# FROM j WHERE ciudad =
“Lima”);
A) Obtener los j# de los proyectos que son de “Trujillo” o de “Lima”
B) Obtener los j# de los proyectos que son de “Trujillo” y algunos de “Lima”
C) Obtener los j# de los proyectos que son de “Trujillo” y de “Lima”
D) Ninguna de las anteriores.
ESQUEMA 2 Sistema RELACIONAL con 2 tablas cuyo significado es el de una base de datos de Empleados
(Tabla E), y la tabla de Departamentos (D) donde trabajan los empleados
E = (EMP_NRO#, APELLIDO, OFICIO, DIRECTOR, FECHA_INGRESO, SALARIO, COMISION, DEP_NRO#)
D = (DEP_NRO#, DNOMBRE, CIUDAD)
donde EMP_NRO#, DEP_NRO# son los códigos de los Empleados y Departamentos respectivamente. Las claves
de cada tabla aparecen en negrita y subrayado
6. [1 pto] Obtener todos los empleados que tienen el mismo oficio que ‘Javier’.
SELECT EMP_NRO#, APELLIDO FROM E
WHERE OFICIO IN (SELECT OFICIO FROM E WHERE APELLIDO = ‘Javier’)
AND APELLIDO <>’Javier’;
Se resalta APELLIDO porque no existe el ATRIBUTO Nombre
7. [1 pto] Obtener información de los empleados que ganan más que cualquier empleado del departamento 30.
SELECT EMP_NRO#, APELLIDO, OFICIO, SALARIO
FROM E WHERE SALARIO > ALL (SELECT SALARIO FROM E WHERE DEP_NRO# = 30);
9. [2 ptos] Listar, en orden alfabético, aquellos empleados que no trabajen ni en Trujillo ni en Lima.
SELECT EMP_NRO#, APELLIDO, OFICIO
FROM E JOIN D
ON (E. DEP _NRO# = D. DEP_NRO#)
WHERE CIUDAD <> ‘Trujillo’ AND CIUDAD <> ‘Lima’
ORDER BY APELLIDO;
10.[2 ptos] Listar los nombres de los departamentos que tengan algún empleado con fecha de alta anterior a 1982.
SELECT DNOMBRE FROM E JOIND D
ON (E.DEP _NRO# = D.DEP _NRO#)
WHERE FECHA_INGRESO <’01-01-1982’;
Dado que no existe FECHA_ALTA, se considera FECHA_INGRESO
11.[2 ptos] Obtener los departamentos y sus nombres, siempre que haya más de un empleado trabajando en ellos.
SELECT DEP_NRO#, DNOMBRE FROM D
WHERE DEP_NRO# IN (SELECT DEP_NRO# FROM E
HAVING COUNT(EMP_NRO#)>1 GROUP BY DEP_NRO#);
12.[3 ptos] Normalizar en 1FN, 2FN y 3FN el siguiente documento
13.[2 ptos] En HR de Oracle, consulta para identificar a todos los empleados que ganan menos que el promedio y que
trabajan en cualquiera de los departamentos de TI.
SELECT employee_id, first_name, last_name FROM Employees
WHERE salary < (SELECT AVG(salary) from Employees)
AND job_id LIKE 'IT%';
14.[3 ptos] En HR de Oracle, Mostrar el nombre del país, ciudad y cantidad de departamentos que tienen más de 5
empleados.
SELECT country_name, city, COUNT(department_ID)
FROM Countries JOIN Locations USING (country_ID) JOIN Departments USING (Location_ID)
WHERE department_ID IN (SELECT department_ID FROM Employees
GROUP BY department_ID
HAVING COUNT(department_ID)>5)
GROUP BY Country_Name, City;
15.[2 puntos] Crear una función en PL/SQL que reciba el ID del departamento y retorne el nombre del jefe del
departamento