Tarea 4 – Base de datos – 1º DAM/DAW e-learning

Hola a todos, hoy os dejo la tarea 4 de base de datos de 1º DAM/DAW de e-learning.

Pueden haber diferentes tareas según la región o instituto. Si quieres que agregue alguna tarea, contacta conmigo.

Contáctanos

Versión 1


CREATE TABLE CENTRO(
    codcentro number(2) not null, 
    direccion varchar2(30) not null, 
    localidad varchar2(20) not null
);
insert into centro values (01,'Rambla Nova','Tarragona');
insert into centro values (02,'Alcala','Madrid');
insert into centro values (03,'Sierpes','Sevilla');
alter table centro add constraints pk_codcentro primary key(codcentro); 
CREATE TABLE DPTO(
    coddpto number(2) not null, 
    denominacion varchar2(20) not null, 
    codcentro number(2) not null,
    coddptodepende number(2), 
    codemplejefe number(3) not null,
    tipo char(1) not null , 
    presupuesto number(8,2) not null
);
insert into dpto values (01,'DIRECCIÓN',01,NULL,01,'P',100000);
insert into dpto values (02,'ADMINISTRACION',01,01,03,'F',50000);
insert into dpto values (03,'RECURSOS HUMANOS',01,01,05,'P',30000);
insert into dpto values (05,'CENTRAL COMERCIAL',01,01,07,'P',100000);
insert into dpto values (06,'COMERCIAL CENTRO',02,05,02,'F',5000);
insert into dpto values (07,'COMERCIAL SUR',03,05,04,'F',40000); 
create table empleado(
    codemple number(3) not null, 
    ape1 varchar2(20) not null,
    ape2 varchar2(20) not null,
    nombre varchar2(15) not null,
    direccion varchar2(25) not null,
    localidad varchar(25) not null,
    telef varchar(9),
    coddpto number(2) not null,
    codcate number(2) not null,
    fechaingreso date not null,
    salario number(6,2) not null,
    comision number(6,2)
);
insert into empleado values (01,'LOPEZ','GARCIA','ANA','C/ ANAS','MADRID',666666666,01,01,TO_DATE('01/02/2000','DD/MM/YYYY'),3000,NULL);
insert into empleado values (02,'FERNANDEZ','MORON','JUAN','C/FUENTE','TARRAGONA', 7777777,01,02,TO_DATE('01/02/2002','DD/MM/YYYY'),2000,NULL);
insert into empleado values (03,'CORTES','LOPEZ','ANGEL','C/CIFUENTES','BARACALDO',888888,02,01,TO_DATE('01/03/2003','DD/MM/YYYY'),2000,NULL);
insert into empleado values (04,'SANCHEZ','LUZ','FABIOLA','C/CARDON','SEVILLA',99999999,03,02,TO_DATE('21/05/2001','DD/MM/YYYY'),2500,NULL);
insert into empleado values (05,'RAJOY','AZNAR','PAZ','C/MAR','JAEN',88888888,03,01, TO_DATE('23/02/2000','DD/MM/YYYY'),2000,130);
insert into empleado values (06,'ZAPATERO','GALLARDON','ANGUSTIAS','C/SUR','MADRID', 78787878,05,03,TO_DATE('01/02/2000','DD/MM/YYYY'),2000,NULL);
insert into empleado values (07,'FLOR','LUZ','BLANCA','C/TECLA','SEVILLA',7777777,06,01,TO_DATE('01/02/2000','DD/MM/YYYY'),3000,130);
insert into empleado values (08,'ROS','SANTON','ALFONSO','C/ LUZ','MADRID',888888,07,03,TO_DATE('01/02/2003','DD/MM/YYYY'),2000,NULL);
insert into empleado values (09,'LOPEZ','ITURRIALDE','GANDI','C/OASIS','TARRAGONA',777777,05,01,TO_DATE('01/02/1998','DD/MM/YYYY'),1500,210);
insert into empleado values (10,'JAZMIN','EXPOSITO','MARIA','C/MANDRAGORA','MADRID',888888,05,03,TO_DATE('01/03/2001','DD/MM/YYYY'),1000,200);
alter table dpto add constraints pk_coddpto primary key (coddpto);
alter table dpto add constraints fk_codcentro foreign key(codcentro) references centro(codcentro);
alter table dpto add constraints fk_coddptodepende foreign key(coddptodepende) references dpto(coddpto);
alter table dpto add constraints chk_tipo check(tipo in('P','F')); 
alter table empleado add constraints pk_codemple primary key(codemple);
alter table dpto add constraints fk_codemplejefe foreign key (codemplejefe) references empleado(codemple);
alter table empleado add constraints fk_coddpto foreign key(coddpto) references dpto(coddpto);
create table categoria (codcate number(2) not null, denom varchar2(20) not null, julio number(6,2) not null, diciembre number(6,2) not null);
insert into categoria values (1,'ALTOS DIRECTIVOS',6000,5000);
insert into categoria values (2,'DIRECTIVOS',3000,2000);
insert into categoria values (3,'ADMINISTRATIVOS',2000,1500);
alter table categoria add constraints pk_codcate primary key(codcate);
alter table empleado add constraints fk_codcate foreign key(codcate) references categoria(codcate);


  1. Obtener los nombres y salarios de los empleados con más de 1000 euros de salario por orden alfabético.
  2. Obtener el nombre de los empleados cuya comisión es superior al 20% de su salario.
  3. Obtener el código de empleado, código de departamento, nombre y sueldo total en pesetas, de aquellos empleados cuyo sueldo total (salario más comisión) supera los 1800 euros. Presentarlos ordenados por código de departamento y, dentro de éstos, por orden alfabético.
  4. Obtener, por orden alfabético, los nombres de empleados cuyo salario igualen o superen en más de un 5% al salario de la empleada ‘MARIA JAZMIN’.
  5. Obtener un listado ordenado por años en la empresa con los nombres,y apellidos de los empleados, y los años de antigüedad en la empresa.
  6. Obtener el nombre de los empleados que trabajan en un departamento con presupuesto superior a 50.000 euros. Hay que usar predicado cuantificado.
  7. Obtener los nombres y apellidos de empleados que más cobran en la empresa. Considerar el salario más la comisión.
  8. Obtener en orden alfabético los nombres de empleado cuyo salario es inferior al mínimo de los empleados del departamento 1.
  9. Obtener los nombres de empleados que trabajan en el departamento del cuál es jefe el empleado con código 1.
  10. Obtener los nombres de los empleados cuyo primer apellido empiece por las letras p, q, r, s.
  11. Obtener los empleados cuyo nombre de pila contenga el nombre JUAN.
  12. Obtener los nombres de los empleados que viven en ciudades en las que hay algún centro de trabajo.
  13. Obtener el nombre del jefe de departamento que tiene mayor salario de entre los jefes de departamento.
  14. Obtener en orden alfabético los salarios y nombres de los empleados cuyo salario sea superior al 60% del máximo salario de la empresa.
  15. Obtener en cuántas ciudades distintas viven los empleados.
  16. El nombre y apellidos del empleado que más salario cobra.
  17. Obtener las localidades y número de empleados de aquellas en las que viven más de 3 empleados.
  18. Obtener, para cada departamento, cuántos empleados trabajan, la suma de sus salarios y la suma de sus comisiones, para aquellos departamentos en los que hay algún empleado cuyo salario es superior a 1700 euros.
  19. Obtener el departamento que más empleados tiene.
  20. Obtener los nombres de todos los centros y los departamentos que se ubican en cada uno, así como aquellos centros que no tienen departamentos.
  21. Obtener el nombre del departamento de más alto nivel, es decir, aquel que no depende de ningún otro.
  22. Obtener todos los departamentos existentes en la empresa y los empleados (si los tiene) que pertenecen a él.
  23. Obtener un listado en el que aparezcan todos los departamentos existentes y el departamento del cual depende, si depende de alguno.
  24. Obtener un listado, ordenado alfabéticamente, donde aparezcan los nombres de los empleados y a continuación el literal «tiene comisión» si la tiene, y «no tiene comisión» si no la tiene.
  25. Obtener un listado de las localidades en las que hay centros y no vive ningún empleado, ordenado alfabéticamente.
  26. Obtener un listado de las localidades en las que hay centros y además vive al menos un empleado, ordenado alfabéticamente.
  27. Esta cuestión puntúa doble. Se desea dar una gratificación por navidades en función de la antigüedad en la empresa siguiendo estas pautas:
    • Si lleva entre 1 y 5 años, se le dará 100 euros
    • Si lleva entre 6 y 10 años, se le dará 50 euros por año
    • Si lleva entre 11 y 20 años, se le dará 70 euros por año
    • Si lleva más de 21 años, se le dará 100 euros por año

Obtener un listado de los empleados, ordenado alfabéticamente, indicando cuánto le corresponde de gratificación.

  1. Obtener los nombres y apellidos de los empleados que no son jefes de departamento.

Aquí puedes descargar la tarea.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.