M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Solucions T6-HR

De wikiserver
Dreceres ràpides: navegació, cerca

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.

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 la consulta 4) para mostrar todos los empleados, incluido King, que no tienen gestor. Ordene los resultados por número de empleado.

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