Practica Calificada Nro 2 Resuelto1

5
Universidad Peruana Unión – FIA - Sistemas 2012 1ra Práctica Calificada de Base de Datos Alumno (a): Lima Taype zacarias ivan_____________________________ Grupo: __2_____________ Fecha: 08 de octubre del 2013 Prof. Ing. Diana L. Sanchez Torpoco 1. Desarrollar: Tenemos que diseñar una base de datos para una empresa que vende material informático, de la que tenemos ésta información (nombres referenciales): CODIGO_EQUIPO, DESCRIPCIÓN_EQUIPO, PRECIO_EQUIPO, CÓDIGO_COMPONENTE, DESCRIPCIÓN_COMPONENTE, STOCK_COMPONENTE, PRECIO_COMPONENTE, DNI_EMPLEADO, NOMBRE_EMPLEADO, SECCIÓN_EMPLEADO, RUC_CLIENTE, NOMBRE_CLIENTE, DOMICILIO_CLIENTE, CÓDIGO_EQUIPOS_CLIENTE, CANTIDAD_EQUIPOS_CLIENTE, CÓDIGO_COMPONENTES_CLIENTE CANTIDAD_COMPONENTES_CLIENTE, FECHA_VENTA. Sabemos que: Un empleado trabaja en una sección y una sección puede tener muchos empleados Cada cliente compra a través de un solo empleado. Un equipo consta de varios componentes. Se pueden comprar equipos completos o equipos sueltos a. Dibujar el DER y pasarlo a tablas (3p) b. Crear la BD dentro del SGBD Oracle, llamado VENTAS con las respectivas tablas (escribir el script de la BD).(2p) c. Escribir las consultas en SQL para responder las siguientes preguntas (5p) o Cuáles son los empleados que han vendido equipos a la ciudad de Tumbes? o Cuáles son los códigos y descripciones de los equipos con monitores LCD 18’’?. o Cuales el monto vendido durante el mes de diciembre? o Que mes se obtuvo una mayor utilidad. o Se requiere un reporte del stock de componentes por equipos. o Empleados que no realizaron ninguna venta (opcional). 2. Resolver los siguientes sentencias SQL según lo solicitado. SQL A a. Muestre el apellido, la fecha de contratación y el día de la semana en que empezó el empleado. Etiquete la columna como DAY, ordene los resultados por el día de la semana. select last_name, hire_date,to_char(hire_date,'DAY')as "dia" FROM employees order by HIRE_DATE; 1

Transcript of Practica Calificada Nro 2 Resuelto1

Page 1: Practica Calificada Nro 2 Resuelto1

Universidad Peruana Unión – FIA - Sistemas 2012

1ra Práctica Calificada de Base de Datos

Alumno (a): Lima Taype zacarias ivan_____________________________ Grupo: __2_____________

Fecha: 08 de octubre del 2013 Prof. Ing. Diana L. Sanchez Torpoco

1. Desarrollar:Tenemos que diseñar una base de datos para una empresa que vende material informático, de la que tenemos ésta información (nombres referenciales):CODIGO_EQUIPO, DESCRIPCIÓN_EQUIPO, PRECIO_EQUIPO, CÓDIGO_COMPONENTE, DESCRIPCIÓN_COMPONENTE, STOCK_COMPONENTE, PRECIO_COMPONENTE, DNI_EMPLEADO, NOMBRE_EMPLEADO, SECCIÓN_EMPLEADO, RUC_CLIENTE, NOMBRE_CLIENTE, DOMICILIO_CLIENTE, CÓDIGO_EQUIPOS_CLIENTE, CANTIDAD_EQUIPOS_CLIENTE, CÓDIGO_COMPONENTES_CLIENTE CANTIDAD_COMPONENTES_CLIENTE, FECHA_VENTA.

Sabemos que: Un empleado trabaja en una sección y una sección puede tener muchos empleados Cada cliente compra a través de un solo empleado. Un equipo consta de varios componentes. Se pueden comprar equipos completos o equipos sueltos

a. Dibujar el DER y pasarlo a tablas (3p)b. Crear la BD dentro del SGBD Oracle, llamado VENTAS con las respectivas tablas (escribir el script de la BD).

(2p)c. Escribir las consultas en SQL para responder las siguientes preguntas (5p)

o Cuáles son los empleados que han vendido equipos a la ciudad de Tumbes?o Cuáles son los códigos y descripciones de los equipos con monitores LCD 18’’?.o Cuales el monto vendido durante el mes de diciembre?o Que mes se obtuvo una mayor utilidad.o Se requiere un reporte del stock de componentes por equipos. o Empleados que no realizaron ninguna venta (opcional).

2. Resolver los siguientes sentencias SQL según lo solicitado. SQL A

a. Muestre el apellido, la fecha de contratación y el día de la semana en que empezó el empleado. Etiquete la columna como DAY, ordene los resultados por el día de la semana.

select last_name, hire_date,to_char(hire_date,'DAY')as "dia"FROM employeesorder by HIRE_DATE;

b. Cree un informe que muestre los puestos que se encuentren en los departamentos Administration y Executive. Muestre también el número de empleados para estos puestos. Muestre en primer lugar el puesto con mayor número de empleados.select d.department_name,e.department_id,count(e.employee_id)cantidad from employees e,departments dwhere e.department_id = d.department_id and d.department_name in('Administration','Executive')group by e.department_id,department_nameorder by cantidad desc;

c. Crear una vista para mostrar un informe con el apellido del empleado y el número de empleado junto al apellido y número de supervisor del supervisor del empleado. Etiquete las columnas como Employee, EMP#, Manager, Mgr#.

1

Page 2: Practica Calificada Nro 2 Resuelto1

Universidad Peruana Unión – FIA - Sistemas 2012

select e.last_name as "employee",e.employee_id as "EMP#", m.last_name as "Manager", e.manager_id as "Mgr#"from employees e , employees mwhere m.employee_id = e.manager_idorder by (e.manager_id) asc;

d. El departamento de recursos humanos necesita un informe sobre grados de trabajo y salarios. Para ello, deberá crear una tabla, llamada JOB_GRADES, con la siguiente estructura:Grade_level varchar2(3)Lowest_sal numberHighest_sal number

create table JOB_GRADES(codigo number,Grade_level varchar2(3),Lowest_sal number,Highest_sal number, constraint cod primary key(codigo));

Rellenar la siguiente información

insert into JOB_GRADES values(1,'A',1000,2999);

insert into JOB_GRADES values(2,'B',3000,5999);

insert into JOB_GRADES values(3,'C',6000,9999);

insert into JOB_GRADES values(4,'D',10000,14999);

insert into JOB_GRADES values(5,'E',15000,24999);

insert into JOB_GRADES values(6,'F',25000,15000);

insert into JOB_GRADES values(7,'G',40000,50000);

Codigo Grado_Level

Lowest_Sal Highest_sal

2

Page 3: Practica Calificada Nro 2 Resuelto1

Universidad Peruana Unión – FIA - Sistemas 2012

1 A 1000 29992 B 3000 59993 C 6000 99994 D 10000 149995 E 15000 249996 F 25000 150007 G 40000 50000

Importante, crear una secuencia para generar los códigos de la tabla (PK) Actualice el registro 6 con Highest_sal=40000.

alter table job_grades modify (Highest_sal number default '40000')

Eliminar el registro 7.delete from job_grades where codigo='7'A continuación, cree una consulta que muestre el apellido, el puesto, el nombre de departamento, el salario y el grado de todos los empleados.

e. El departamento de RRHH quiere determinar los nombres de todos los empleados contratados después de Davies. Cree una consulta para mostrar el nombre y la fecha de contratación de cualquier empleado contratado después que Davies.

Select first_name, last_name, hire_dateFrom employeesWhere hire_date > (select hire_dateFrom employeesWhere last_name =’Davies’);

f. El departamento de RRHH necesita una consulta que muestre el apellido y la fecha de contratación de cualquier empleado del mismo departamento que Zlotkey, excepto Zlotkey.

select last_name, hire_dateFROM employeeswhere department_id in(select department_id from employees where last_name='Zlotkey')and last_name not in ('Zlotkey') ;

g. Crear un informe que muestre el número de empleado y el apellido de todos los empleados que trabajen en un departamento en que haya algún empleado cuyo apellido contenga una u.

Select employee_id, last_nameFrom employeesWhere department_id in (

Select department_idFrom employeesWhere last_name like ‘%u%' )

h. Cree un informe que muestre el apellido y el salario de todos los empleados que informen a King. select m.last_name ,e.last_name as "Informadores", e.salaryfrom employees e , employees mwhere m.employee_id=e.manager_id and e.manager_id=100;

3

Page 4: Practica Calificada Nro 2 Resuelto1

Universidad Peruana Unión – FIA - Sistemas 2012

i. El departamento de RRHH necesita una lista de países en los que no haya ningún departamento. Muestre el identificador del país y el nombre de los países.select c.country_id, c.country_name ,l.state_province as "no exixte"from countries c , locations lwhere c.country_id=l.country_idand l.state_province is null;

j. Genere una lista de puestos para los departamentos 10, 50 y 20 en ese orden. Muestre el identificador de puesto, y el departamento.select job_id, department_idfrom employeeswhere department_id in (10,50,20);

k. Cree un informe que muestre los identificadores de empleado y de puesto de los empleados que actualmente tengan un cargo igual al que tenían cuando de los contrató inicialmente (es decir, han cambiado de puesto pero han vuelto a ocupar el puesto original)

3. Resolver: SQL Ba. El personal del departamento de RRHH quiere ocultar parte de los datos de la tabla EMPLOYEES. Quieren

una vista denominada EMPLOYEES_VU, basada en los números de empleado, los nombres de empleado, comisión y los números de departamento de la tabla EMPLOYEES. Quieren que la cabecera para el nombre de empleado sea EMPLOYEE.Alter table employees rename to EMPLOYEES_VU;alter table employees rename column employee_id to employee_vualter table employees rename column first_name to employee

b. Mediante la vista EMPLOYEES_VU, escriba una consulta para el departamento de RRHH que muestre todos los nombres de empleados y los números de departamento, solo de aquellos que tengan comisión.

Select employee_vu ,employee,department_id,commission_pct from employees_vuwhere commission_pct is not null;

c. Crear un índice en la columna nombre de la tabla employees.CREATE INDEX employees_last_name_idxON employees(last_name);

d. Crear un sinónimo de la tabla EMPLOYEES desde el usuario VENTAS (creado en la pregunta 1), con el nombre EMP. Verificar.

4