Práctica 6-1: Visualización de Datos de Varias Tablas Utilizando Uniones
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 sólo de los empleados con los departamentos correspondientes. Escriba una consulta para mostrar el apellido, número y nombre de departamento de estos empleados.
select e.last_name, department_id, d.department_name from employees e join departments d 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, d.department_id, d.department_name FROM employees e, departments d, locations l WHERE e.department_id = d.department_id AND d.location_id = l.location_id AND LOWER(l.city) = LOWER('Toronto');
alternativa
SELECT e.last_name, e.job_id, d.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 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 del empleado. Etiquete las columnas como Employee , Emp# , Manager y Mgr# , respectivamente. Guarde la sentencia SQL como lab_06_04.sql . Ejecute la consulta.
SELECT e1.last_name AS "Empleado" , e1.employee_id AS "Emp#", e2.last_name AS "Administrador", e1.manager_id AS "Mgr#" FROM employees e1 join employees e2 on (e1.manager_id = e2.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 e1.last_name AS "Empleado" , e1.employee_id AS "Emp#", e2.last_name AS "Administrador", e1.manager_id AS "Mgr#" FROM employees e1 left outer join employees e2 on (e1.manager_id = e2.employee_id);
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 .
select e.department_id DEPARTMENT, e.last_name Employee, d.last_name COLLEAGUE from employees e join employees d on (e.department_id=d.department_id) and e.last_name!=d.last_name;
alternativa
select e.department_id DEPARTMENT, e.last_name Employee, d.last_name COLLEAGUE from employees e join employees d on (e.department_id=d.department_id) where e.last_name<>d.last_name order by e.department_id, e.last_name, d.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.
select e.last_name, e.job_id, d.department_name, e.salary from employees e join departments d on (e.department_id=d.department_id);
tabla job_grade no esta
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 d on d.last_name='Davies' and e.hire_date > d.hire_date order by e.hire_date;
alternativa
select e.last_name, e.hire_date from employees e cross join employees d where d.last_name='Davies' and e.hire_date > d.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 e.last_name, e.hire_date , j.last_name LAST_NAME_1, j.hire_date HIRE_DATE_1 from employees e join employees j on e.manager_id=j.employee_id and e.hire_date < j.hire_date order by e.hire_date;
alternativa
select e.last_name, e.hire_date , j.last_name LAST_NAME_1, j.hire_date HIRE_DATE_1 from employees e join employees j on e.manager_id=j.employee_id where e.hire_date < j.hire_date order by e.hire_date;
No hay comentarios:
Publicar un comentario