Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Solucions T7-1»
(Hi ha una revisió intermèdia del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
+ | '''ESQUEMA HR''' | ||
+ | |||
1.Empleats que tinguin algun empleat al seu càrrec (EXISTS). | 1.Empleats que tinguin algun empleat al seu càrrec (EXISTS). | ||
<pre> | <pre> | ||
Línia 104: | Línia 106: | ||
</pre> | </pre> | ||
12.Mostreu l'identificador de país i el nom dels països que no tenen departaments ubicats en ells (MINUS). | 12.Mostreu l'identificador de país i el nom dels països que no tenen departaments ubicats en ells (MINUS). | ||
+ | |||
+ | <pre> | ||
+ | SELECT country_id, country_name | ||
+ | FROM countries | ||
+ | MINUS | ||
+ | SELECT country_id, c.country_name | ||
+ | FROM departments d NATURAL JOIN locations l NATURAL JOIN countries c; | ||
+ | </pre> | ||
+ | <!-- | ||
<pre> | <pre> | ||
SELECT country_id, country_name | SELECT country_id, country_name | ||
Línia 112: | Línia 123: | ||
WHERE d.location_id = l.location_id AND l.country_id = c.country_id; | WHERE d.location_id = l.location_id AND l.country_id = c.country_id; | ||
</pre> | </pre> | ||
+ | --> | ||
13.Mostreu els identificadors dels departaments i dels càrrecs dels departaments 10, 50 i 20 (UNION). | 13.Mostreu els identificadors dels departaments i dels càrrecs dels departaments 10, 50 i 20 (UNION). | ||
<pre> | <pre> |
Revisió de 11:45, 16 nov 2022
ESQUEMA HR
1.Empleats que tinguin algun empleat al seu càrrec (EXISTS).
SELECT employee_id, first_name FROM employees e WHERE EXISTS ( SELECT * FROM employees WHERE manager_id = e.employee_id);
2.Departaments que no tinguin empleats (NOT EXISTS).
SELECT department_name FROM departments dept WHERE NOT EXISTS ( SELECT * FROM employees WHERE employees.department_id = dept.department_id);
3.Empleats que no tenen cap empleat al seu càrrec (NOT EXISTS).
SELECT employee_id, first_name FROM employees e WHERE NOT EXISTS ( SELECT * FROM employees WHERE manager_id = e.employee_id);
4.Cognoms dels empleats que tinguin un o més companys de feina en els seus departaments amb dates de contractació posteriors però salaris més alts (EXISTS).
SELECT last_name FROM employees e1 WHERE EXISTS ( SELECT * FROM employees e2 WHERE e2.hire_date > e1.hire_date AND e2.salary > e1.salary AND e2.department_id = e1.department_id);
5.Mostreu l'identificador dels empleats i l'identificador de totes les feines que han tingut (UNION).
SELECT employee_id, job_id FROM employees UNION SELECT employee_id, job_id FROM job_history ORDER BY employee_id;
6.El mateix que la 5, però considerant també el departament on han desenvolupat les feines (UNION).
SELECT employee_id, job_id, department_id FROM employees UNION SELECT employee_id, job_id, department_id FROM job_history;
7.Mostreu l'identificador dels empleats i l'identificador de totes les feines que han tingut en cada departament (UNION ALL).
SELECT employee_id, job_id FROM employees UNION ALL SELECT employee_id, job_id FROM job_history;
8.Mostreu els identificadors dels empleats i del càrrec dels empleats que actualment tinguin un càrrec que varen ocupar en un altre període en la companyia (INTERSECT).
SELECT employee_id, job_id FROM employees INTERSECT SELECT employee_id, job_id FROM job_history;
9.Igual que la 8, però considerant també el departament on han treballat (INTERSECT).
SELECT employee_id, job_id, department_id FROM employees INTERSECT SELECT employee_id, job_id, department_id FROM job_history;
10.Mostreu els identificadors dels empleats i del càrrec dels empleats que no han canviat mai de càrrec (MINUS).
No és pot fer directament amb el MINUS!. El que si podem fer és mostrar només els identificadors dels empleats. SELECT employee_id FROM employees MINUS SELECT employee_id FROM job_history;
11.Mostreu els identificadors dels departaments per a departaments que no continguin l'ID de càrrec ST_CLERK (MINUS).
SELECT department_id FROM departments MINUS SELECT department_id FROM employees WHERE job_id ='ST_CLERK';
12.Mostreu l'identificador de país i el nom dels països que no tenen departaments ubicats en ells (MINUS).
SELECT country_id, country_name FROM countries MINUS SELECT country_id, c.country_name FROM departments d NATURAL JOIN locations l NATURAL JOIN countries c;
13.Mostreu els identificadors dels departaments i dels càrrecs dels departaments 10, 50 i 20 (UNION).
SELECT department_id, job_id FROM employees WHERE department_id = 10 UNION SELECT department_id, job_id FROM employees WHERE department_id = 20 UNION SELECT department_id, job_id FROM employees WHERE department_id = 50;