M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Solucions T8-HR
1) El departamento de recursos humanos necesita una lista de ID de departamento que no contienen el ID de cargo ST_CLERK . Utilice los operadores de definición para crear este informe.
SELECT department_id FROM departments MINUS SELECT department_id FROM employees WHERE job_id = 'ST_CLERK';
2) El departamento de recursos humanos necesita una lista de países que no tienen ningún departamento. Muestre el ID de país y el nombre de los países. Utilice los operadores de definición para crear este informe.
SELECT country_id,country_name FROM countries MINUS SELECT l.country_id,c.country_name FROM locations l JOIN countries c ON (l.country_id = c.country_id) JOIN departments d ON d.location_id=l.location_id;
3) Cree una lista de cargos para los departamentos 10, 50 y 20, en ese orden. Muestre los ID de cargo y departamento mediante los operadores de definición.
SELECT distinct job_id, department_id FROM employees WHERE department_id = 10 UNION ALL SELECT DISTINCT job_id, department_id FROM employees WHERE department_id = 50 UNION ALL SELECT DISTINCT job_id, department_id FROM employees WHERE department_id = 20;
En aquesta versió també:
SELECT job_id, department_id FROM employees WHERE department_id=10 UNION SELECT job_id, department_id FROM employees WHERE department_id=50 UNION SELECT job_id, department_id FROM employees WHERE department_id=20;
4) Cree un informe que muestre los ID de empleado y de cargo de los empleados que actualmente tienen un puesto que es el mismo que tenían cuando fueron contratados (es decir, han cambiado de cargo pero ahora han vuelto a su puesto original).
SELECT employee_id,job_id FROM employees INTERSECT SELECT employee_id,job_id FROM job_history;
5) El departamento de recursos humanos necesita un informe con las siguientes especificaciones:
- ID de departamento y apellido de todos los empleados de la tabla EMPLOYEES, independientemente de si pertenecen o no a un departamento.
- El nombre e ID de departamento de todos los departamentos de la tabla DEPARTMENTS , independientemente de si hay o no empleados trabajando en dichos departamentos.
Para ello, escriba una consulta compuesta.
SELECT last_name,department_id,TO_CHAR(null) department_name FROM employees UNION SELECT TO_CHAR(null),department_id,department_name FROM departments;