Ejercicios de Consultas SQL para Ingeniería del Software
Sección 1: Consultas con Subconsultas y Filtros Básicos
1. Mostrar los datos de los empleados que pertenezcan al mismo departamento que ‘GIL’.
SELECT * FROM emple WHERE dept_no = (SELECT dept_no FROM emple WHERE apellido = '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 = (SELECT oficio FROM emple WHERE apellido = 'CEREZO') ORDER BY apellido;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 * FROM emple WHERE oficio = (SELECT oficio FROM emple WHERE apellido = 'JIMÉNEZ')
OR salario >= (SELECT salario FROM emple WHERE apellido = '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 dept_no = (SELECT dept_no FROM emple WHERE apellido = 'FERNÁNDEZ')
AND salario = (SELECT salario 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;Sección 2: Consultas con Relaciones (Joins)
6. Mostrar los apellidos, oficios y localizaciones de los departamentos de cada uno de los empleados.
SELECT apellido, oficio, 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, loc FROM emple, depart
WHERE oficio = 'ANALISTA' AND emple.dept_no = depart.dept_no;8. Seleccionar el apellido, el oficio y salario de los empleados que trabajan en Madrid.
SELECT apellido, oficio, salario FROM emple, depart
WHERE emple.dept_no = depart.dept_no AND loc = 'Madrid';9. Seleccionar el apellido, salario y localidad donde trabajan de los empleados que tengan un salario entre 200.000 y 300.000.
SELECT apellido, salario, loc FROM emple, depart
WHERE emple.dept_no = depart.dept_no AND salario BETWEEN 200000 AND 300000;10. Mostrar el apellido, salario y nombre del departamento de los empleados que tengan el mismo oficio que ‘GIL’.
SELECT apellido, salario, dnombre FROM emple, depart
WHERE emple.dept_no = depart.dept_no AND oficio = (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.
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, dnombre FROM emple, depart
WHERE emple.dept_no = depart.dept_no
AND oficio = (SELECT oficio FROM emple WHERE apellido = 'GIL')
AND comision IS NULL;12. Mostrar los datos de los empleados que trabajan en el departamento de Contabilidad, ordenados por apellidos.
SELECT * FROM emple, depart
WHERE emple.dept_no = depart.dept_no AND dnombre = 'Contabilidad'
ORDER BY apellido;13. Apellido de los empleados que trabajan en Sevilla y cuyo oficio sea analista o empleado.
SELECT apellido FROM emple, depart
WHERE emple.dept_no = depart.dept_no AND loc = 'Sevilla'
AND oficio IN ('analista', 'empleado');Sección 3: Funciones de Agregado y Estadísticas
14. Calcula el salario medio de todos los empleados.
SELECT AVG(salario) FROM emple;15. ¿Cuál es el máximo salario de los empleados del departamento 10?
SELECT MAX(salario) FROM emple WHERE dept_no = 10;16. Calcula el salario mínimo de los empleados del departamento ‘VENTAS’.
SELECT MIN(salario) FROM emple, depart
WHERE dnombre = 'VENTAS' AND emple.dept_no = depart.dept_no;17. Calcula el promedio del salario de los empleados del departamento de ‘CONTABILIDAD’.
SELECT AVG(salario) FROM emple, depart
WHERE emple.dept_no = depart.dept_no AND 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, depart
WHERE dnombre = 'VENTAS' AND emple.dept_no = depart.dept_no;21. Calcula el número de empleados que hay que no tienen comisión.
SELECT COUNT(*) FROM emple WHERE comision IS NULL;22. Seleccionar el apellido del empleado que tiene el 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, depart
WHERE emple.dept_no = depart.dept_no AND dnombre = 'VENTAS'
AND salario = (SELECT MAX(salario) FROM emple, depart
WHERE emple.dept_no = depart.dept_no AND dnombre = 'VENTAS');Sección 4: Búsqueda de Patrones y Consultas Adicionales
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%';26. Dada la tabla EMPLE, obtener el sueldo medio, el número de comisiones no nulas, el máximo sueldo y el sueldo mínimo de los empleados del departamento 30.
SELECT AVG(salario), COUNT(comision), MAX(salario), MIN(salario)
FROM emple WHERE dept_no = 30;Consulta adicional:
SELECT * FROM emple WHERE dept_no = (SELECT dept_no FROM emple WHERE apellido = 'Calle ato'); 