Consultas SQL Resueltas para Gestión de Empleados y Departamentos

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');

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.