Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF2: Llenguatges SQL / Solucions T6-HR»

De wikiserver
Dreceres ràpides: navegació, cerca
(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 .
 
e
 
l
 
c
 
 
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
 
  
e.last_name, 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.
employees e JOIN employees davies
+
<pre>
(davies.last_name = 'Davies')
 
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
 
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;