Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Solucions T6-HR»
(Es crea la pàgina amb «1) Escriba una consulta para que el departamento de recursos humanos genere las direcciones de todos los departamentos. Utilice las tablas LOCATIONS y COUNTRIES . Mues...».) |
|||
Línia 27: | Línia 27: | ||
</pre> | </pre> | ||
− | 4) Cree un informe para mostrar el apellido y número de empleado junto con el apellido | + | 4) Cree un informe para mostrar el apellido y número de empleado junto con el apellido y número de gestor de sus gestores. Etiquete las columnas como Employee, Emp#, Manager y Mgr#, respectivamente. Guarde la sentencia SQL como lab_06_04.sql . Ejecute la consulta. |
− | y número de gestor de sus gestores. Etiquete las columnas como Employee , Emp# , | + | <pre> |
− | Manager y Mgr# , respectivamente. Guarde la sentencia SQL como | ||
− | lab_06_04.sql . Ejecute la consulta. | ||
SELECT w.last_name "Employee", w.employee_id "EMP#", | SELECT w.last_name "Employee", w.employee_id "EMP#", | ||
− | m.last_name "Manager", m.employee_id "Mgr#" | + | m.last_name "Manager", m.employee_id "Mgr#" |
− | FROM | + | FROM employees w join employees m |
− | employees w join employees m | + | ON (w.manager_id = m.employee_id); |
− | ON | + | </pre> |
− | (w.manager_id = m.employee_id); | + | |
− | 5) Modifique lab_06_04.sql para mostrar todos los empleados, incluido King, que no | + | 5) Modifique lab_06_04.sql para mostrar todos los empleados, incluido King, que no tienen gestor. Ordene los resultados por número de empleado. Guarde la sentencia SQL como lab_06_05.sql . Ejecute la consulta en el archivo lab_06_05.sql . |
− | tienen gestor. Ordene los resultados por número de empleado. Guarde la sentencia | + | <pre> |
− | SQL como lab_06_05.sql . Ejecute la consulta en el archivo lab_06_05.sql . | ||
− | |||
− | |||
− | |||
SELECT w.last_name "Employee", w.employee_id "EMP#", | SELECT w.last_name "Employee", w.employee_id "EMP#", | ||
− | m.last_name "Manager", m.employee_id "Mgr#" | + | m.last_name "Manager", m.employee_id "Mgr#" |
− | FROM | + | FROM employees w |
− | employees w | + | LEFT OUTER JOIN employees m |
− | LEFT | + | ON (w.manager_id = m.employee_id) |
− | OUTER JOIN employees m | ||
− | ON | ||
− | (w.manager_id = m.employee_id) | ||
ORDER BY 2; | ORDER BY 2; | ||
+ | </pre> | ||
− | 6) Cree un informe del departamento de recursos humanos que muestre los apellidos y | + | 6) Cree un informe del departamento de recursos humanos que muestre los apellidos y números de empleado y todos los empleados que trabajen en el mismo departamento como un empleado determinado. Proporcione a cada columna una etiqueta adecuada. |
− | números de empleado y todos los empleados que trabajen en el mismo departamento | ||
− | como un empleado determinado. Proporcione a cada columna una etiqueta adecuada. | ||
Guarde el script en un archivo denominado lab_06_06.sql . Ejecute la consulta. | Guarde el script en un archivo denominado lab_06_06.sql . Ejecute la consulta. | ||
− | SELECT e.department_id department, e.last_name employee, | + | <pre> |
− | c.last_name colleague | + | SELECT e.department_id department, e.last_name employee, c.last_name colleague |
− | FROM | + | FROM employees e JOIN employees c |
− | employees e JOIN employees c | + | ON (e.department_id = c.department_id) |
− | ON | ||
− | (e.department_id = c.department_id) | ||
WHERE e.employee_id <> c.employee_id | WHERE e.employee_id <> c.employee_id | ||
ORDER BY e.department_id, e.last_name, c.last_name; | ORDER BY e.department_id, e.last_name, c.last_name; | ||
− | 7) El departamento de recursos humanos necesita un informe sobre los salarios y grados | + | </pre> |
− | de cargo. Para familiarizarse con la tabla JOB_GRADES , en primer lugar, muestre la | + | |
− | estructura de la tabla JOB_GRADES . A continuación, cree una consulta que muestre el | + | 7) El departamento de recursos humanos necesita un informe sobre los salarios y grados de cargo. Para familiarizarse con la tabla JOB_GRADES , en primer lugar, muestre la estructura de la tabla JOB_GRADES . A continuación, cree una consulta que muestre el apellido, cargo, nombre de departamento, salario y grado de todos los empleados. |
− | apellido, cargo, nombre de departamento, salario y grado de todos los empleados. | + | <pre> |
DESC JOB_GRADES | DESC JOB_GRADES | ||
+ | |||
SELECT e.last_name, e.job_id, d.department_name, | SELECT e.last_name, e.job_id, d.department_name, | ||
− | e.salary, j.grade_level | + | e.salary, j.grade_level |
− | FROM | + | FROM employees e JOIN departments d |
− | employees e JOIN departments d | + | ON (e.department_id = d.department_id) |
− | ON | + | JOIN job_grades j |
− | (e.department_id = d.department_id) | + | ON (e.salary BETWEEN j.lowest_sal AND j.highest_sal); |
− | JOIN | + | </pre> |
− | job_grades j | ||
− | ON | ||
− | (e.salary BETWEEN j.lowest_sal AND j.highest_sal); | ||
Si desea superarse a sí mismo, complete los siguientes ejercicios: | Si desea superarse a sí mismo, complete los siguientes ejercicios: | ||
− | 8) El departamento de recursos humanos desea determinar los nombres de todos los | + | 8) El departamento de recursos humanos desea determinar los nombres de todos los empleados contratados después de Davies. Cree una consulta para mostrar el nombre y la fecha de contratación de cualquier empleado contratado después del empleado Davies. |
− | empleados contratados después de Davies. Cree una consulta para mostrar el nombre | + | <pre> |
− | y la fecha de contratación de cualquier empleado contratado después del empleado | + | SELECT e.last_name, e.hire_date |
− | Davies. | + | FROM employees e JOIN employees davies |
− | SELECT | + | ON (davies.last_name = 'Davies') |
− | FROM | + | WHERE davies.hire_date < e.hire_date; |
− | ON | + | </pre> |
− | WHERE | ||
− | + | 9) El departamento de recursos humanos necesita buscar el nombre y la fecha de contratación de todos los empleados contratados antes que sus gestores, junto con el nombre y fecha de contratación del gestor. Guarde el script en un archivo denominado lab_06_09.sql. | |
− | + | <pre> | |
− | |||
− | |||
− | 9) El departamento de recursos humanos necesita buscar el nombre y la fecha de | ||
− | contratación de todos los empleados contratados antes que sus gestores, junto con el | ||
− | nombre y fecha de contratación del gestor. Guarde el script en un archivo | ||
− | denominado lab_06_09.sql . | ||
SELECT w.last_name, w.hire_date, m.last_name, m.hire_date | SELECT w.last_name, w.hire_date, m.last_name, m.hire_date | ||
− | FROM | + | FROM employees w JOIN employees m |
− | employees w JOIN employees m | + | ON (w.manager_id = m.employee_id) |
− | ON | + | WHERE w.hire_date < m.hire_date; |
− | (w.manager_id = m.employee_id) | + | </pre> |
− | WHERE | ||
− | w.hire_date < m.hire_date; |
Revisió del 19:45, 19 nov 2017
1) Escriba una consulta para que el departamento de recursos humanos genere las direcciones de todos los departamentos. Utilice las tablas LOCATIONS y COUNTRIES . Muestre el ID de ubicación, dirección, ciudad, estado o provincia y país en la salida. Utilice NATURAL JOIN para producir los resultados.
SELECT location_id, street_address, city, state_province, country_name FROM locations NATURAL JOIN countries;
2) El departamento de recursos humanos necesita un informe de todos los empleados. Escriba una consulta para mostrar el apellido, número y nombre de departamento de todos los empleados.
SELECT last_name, department_id, department_name FROM employees JOIN departments USING (department_id);
3) El departamento de recursos humanos necesita un informe de todos los empleados de Toronto. Muestre el apellido, cargo, número y nombre de departamento de todos los empleados que trabajan en Toronto.
SELECT e.last_name, e.job_id, e.department_id, d.department_name FROM employees e JOIN departments d ON (e.department_id = d.department_id) JOIN locations l ON (d.location_id = l.location_id) WHERE LOWER(l.city) = 'toronto';
4) Cree un informe para mostrar el apellido y número de empleado junto con el apellido y número de gestor de sus gestores. Etiquete las columnas como Employee, Emp#, Manager y Mgr#, respectivamente. Guarde la sentencia SQL como lab_06_04.sql . Ejecute la consulta.
SELECT w.last_name "Employee", w.employee_id "EMP#", m.last_name "Manager", m.employee_id "Mgr#" FROM employees w join employees m ON (w.manager_id = m.employee_id);
5) Modifique lab_06_04.sql para mostrar todos los empleados, incluido King, que no tienen gestor. Ordene los resultados por número de empleado. Guarde la sentencia SQL como lab_06_05.sql . Ejecute la consulta en el archivo lab_06_05.sql .
SELECT w.last_name "Employee", w.employee_id "EMP#", m.last_name "Manager", m.employee_id "Mgr#" FROM employees w LEFT OUTER JOIN employees m ON (w.manager_id = m.employee_id) ORDER BY 2;
6) Cree un informe del departamento de recursos humanos que muestre los apellidos y números de empleado y todos los empleados que trabajen en el mismo departamento como un empleado determinado. Proporcione a cada columna una etiqueta adecuada. Guarde el script en un archivo denominado lab_06_06.sql . Ejecute la consulta.
SELECT e.department_id department, e.last_name employee, c.last_name colleague FROM employees e JOIN employees c ON (e.department_id = c.department_id) WHERE e.employee_id <> c.employee_id ORDER BY e.department_id, e.last_name, c.last_name;
7) El departamento de recursos humanos necesita un informe sobre los salarios y grados de cargo. Para familiarizarse con la tabla JOB_GRADES , en primer lugar, muestre la estructura de la tabla JOB_GRADES . A continuación, cree una consulta que muestre el apellido, cargo, nombre de departamento, salario y grado de todos los empleados.
DESC JOB_GRADES SELECT e.last_name, e.job_id, d.department_name, e.salary, j.grade_level FROM employees e JOIN departments d ON (e.department_id = d.department_id) JOIN job_grades j ON (e.salary BETWEEN j.lowest_sal AND j.highest_sal);
Si desea superarse a sí mismo, complete los siguientes ejercicios:
8) El departamento de recursos humanos desea determinar los nombres de todos los empleados contratados después de Davies. Cree una consulta para mostrar el nombre y la fecha de contratación de cualquier empleado contratado después del empleado Davies.
SELECT e.last_name, e.hire_date FROM employees e JOIN employees davies ON (davies.last_name = 'Davies') WHERE davies.hire_date < e.hire_date;
9) El departamento de recursos humanos necesita buscar el nombre y la fecha de contratación de todos los empleados contratados antes que sus gestores, junto con el nombre y fecha de contratación del gestor. Guarde el script en un archivo denominado lab_06_09.sql.
SELECT w.last_name, w.hire_date, m.last_name, m.hire_date FROM employees w JOIN employees m ON (w.manager_id = m.employee_id) WHERE w.hire_date < m.hire_date;