Hoy quiero postear la última práctica en la que estamos trabajando los alumnos de 1ºASIR del IES Gonzalo Nazareno para el módulo de Base de Datos.
En esta pratica estamos jugando con el lenguaje SQL para realizar consultar a la base de datos que está siendo soportada por MySQL. El boletín que estamos trabajando es el número 6. Este es el enlace para descargar el boletín.
Aquí os dejó el Script de creación de tablas:
-- SCRIPT -- #CREAMOS TABLA DEPARTAMENTO create table depart( dept_no integer, dnombre varchar(20), loc varchar(20), primary key (dept_no) ); #INSERTAMOS DATOS A LA TABLA DEPARTAMENTO insert into depart values ('10','CONTABILIDAD','SEVILLA'); insert into depart values ('20','INVESTIGACION','MADRID'); insert into depart values ('30','VENTAS','BARCELONA'); insert into depart values ('40','PRODUCCION','BILBAO'); #CREAMOS TABLA EMPLEADOS create table emple( emp_no integer, apellidos varchar(20), oficio varchar(20), dir integer, fecha_alt date, salario integer, comision integer, dept_no integer, primary key (emp_no), foreign key (dept_no) references depart (dept_no) ); #INSERTAMOS DATOS A TABLA EMPLEADOS insert into emple (emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no) values ('7369','SANCHEZ','EMPLEADO','7902','17/12/1980','104000','20'); insert into emple values ('7499','ARROYO','VENDEDOR','7698','20/02/1980','208000','39000','30'); insert into emple values ('7521','SALA','VENDEDOR','7698','22/02/1981','162500','162500','30'); insert into emple (emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no) values ('7566','JIMENEZ','DIRECTOR','7839','02/04/1981','386750','20'); insert into emple values ('7654','MARTIN','VENDEDOR','7698','29/09/1981','162500','182000','30'); insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no) values ('7698','NEGRO','DIRECTOR','7839','01/05/1981','370500','30'); insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no) values ('7788','GIL','ANALISTA','7566','09/11/1981','390000','20'); insert into emple(emp_no, apellidos, oficio, fecha_alt, salario, dept_no) values ('7839','REY','PRESIDENTE','17/11/1981','650000','10'); insert into emple values ('7844','TOVAR','VENDEDOR','7698','08/09/1981','195000','0','30'); insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no) values ('7876','ALONSO','EMPLEADO','7788','23/09/1981','143000','20'); insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no) values ('7900','JIMENO','EMPLEADO','7698','03/12/1981','1235000','30'); insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no) values ('7902','FERNANDEZ','ANALISTA','7566','03/12/1981','390000','20'); insert into emple(emp_no, apellidos, oficio, dir, fecha_alt, salario, dept_no) values ('7934','MUÑOZ','EMPLEADO','7782','23/01/1982','169000','10');Ahora os dejó con las consultas que nos pide el Boletín 6:
-- CONSULTAS -- 1. Mostrar los datos de los empleados que pertenezcan al mismo departamento que ʻGILʼ. select * from emple where dept_no = (select dept_no from depart where apellidos="GIL"); 2. Mostrar los datos de los empleados que tengan el mismo oficio que ʻCEREZOʼ. El resultado debe ir ordenado por apellido. select * from emple where oficio in (select oficio from emple where apellidos="CEREZO") order by apellidos; 3. Mostrar los empleados (nombre, oficio, salario y fecha de alta) que desempeñen el mismo oficio que ʻJIMÉNEZʼ o que tengan un salario mayor o igual que ʻFERNÁNDEZʼ. select apellidos, oficio, salario, fecha_alt from emple where oficio in (select oficio from emple where apellidos="JIMÉNEZ") or salario >= (select salario from emple where apellidos="FERNÁNDEZ"); 4. Mostrar en pantalla el apellido, oficio y salario de los empleados del departamento de ʻFERNÁNDEZʼ que tengan su mismo salario. select apellido, oficio, salario from emple where salario = (select salario from emple where dept_no = (select dept_no from emple where apellido="FERNÁNDEZ")); 5. Mostrar los datos de los empleados que tengan un salario mayor que ʻGILʼ y que pertenezcan al departamento número 10. select * from emple where salario > (select salario from emple where apellido="GIL") and dept_no="10"; 6. Mostrar los apellidos, oficios y localizaciones de los departamentos de cada uno de los empleados. select apellido, oficio, depart.loc from emple, depart where emple.dept_no=depart.dept_no; 7. Seleccionar el apellido, el oficio y la localidad de los departamentos donde trabajan los ANALISTAS. select apellido, oficio, depart.loc from emple, depart where emple.dept_no=depart.dept_no and oficio="ANALISTAS"; 8. Seleccionar el apellido, el oficio y salario de los empleados que trabajan en Madrid. select apellido, oficio, salario from emple where dept_no in (select dept_no from depart where loc="MADRID"); 9. Seleccionar el apellido, salario y localidad donde trabajan de los empleados que tengan un salario entre 200000 y 300000. select apellido, salario, depart.loc from emple, depart where emple.dept_no=depart.dept_no and salario > "200000" and salario < "300000"; 10. Mostrar el apellido, salario y nombre del departamento de los empleados que tengan el mismo oficio que ʻGILʼ. select apellido, salario, depart.dnombre from emple,depart where emple.dept_no=depart.dept_no and oficio = in (select oficio from emple where apellido="GIL"); 11. Mostrar el apellido, salario y nombre del departamento de los empleados que tengan el mismo oficio que ʻGILʼ y que no tengan comisión. select apellido, salario, depart.dname from emple, depart where emple.dept_no=depart.dept_no and oficio = in (select oficio from emple where apellido="GIL") and nvl(0,comision) = 0; 12. Mostrar los datos de los empleados que trabajan en el departamento de contabilidad, ordenados por apellidos. select * from emple where dept_no in (select dept_no from depart where dnombre="CONTABLIIDAD") order by apellidos; 13. Apellido de los empleados que trabajan en Sevilla y cuyo oficio sea analista o empleado. select apellido from emple where dept_no in (select dept_no from depart where loca="SEVILLA") and oficio in ("ANALISTA","EMPLEADO"); 14. Calcula el salario medio de todos los empleados. select avg(salario) from emple; 16. Calcula el salario mínimo de los empleados del departamento 'VENTAS'. select min(salario) from emple where dept_no in (select dept_no from depart where dnombre="VENTAS"); 17. Calcula el promedio del salario de los empleados del departamento de 'CONTABILIDAD'. select avg(salario) from emple where dept_no in (select dept_no from depart where dnombre="CONTABILIDAD"); 18. Mostrar los datos de los empleados cuyo salario sea mayor que la media de todos los salarios. select * from emple where salario > (select avg(salario) from emple); 19. ¿Cuántos empleados hay en el departamento número 10? select count(*) from emple where dept_no=10; 20. ¿Cuántos empleados hay en el departamento de 'VENTAS'? select count(*) from emple where dept_no in (select dept_no from depart whre dnombre="VENTAS"); 21. Calcula el número de empleados que hay que no tienen comisión. select count(*) from emple where nvl(0,comision)=0; 22. Seleccionar el apellido del empleado que tiene máximo salario. select apellido from emple where salario = (select max(salario) from emple); 23. Mostrar los apellidos del empleado que tiene el salario más bajo. select apellido from emple where salario = (select min(salario) from emple); 24. Mostrar los datos del empleado que tiene el salario más alto en el departamento de 'VENTAS'. select apellido from emple where salario = (select max(salario) from emple) and dept_no in (select dept_no from depart where dnombre="VENTAS"); 25. A partir de la tabla EMPLE visualizar cuántos apellidos de los empleados empiezan por la letra ʻA. select count(*) from emple where apellido like "A%";
Bueno eso ha sido todo, nos vemos el próximo post, chau ;D
No hay comentarios:
Publicar un comentario