Dado el siguiente esquema:
employees(emp-id, first-name, last-name, hire-date, dept-id, salary) departments(dept-id, dept-name, manager-id, location-id)
Desea mostrar los apellidos y las fechas de contratación de todas las últimas contrataciones en sus respectivos departamentos en el ID de ubicación 1700. Emite la siguiente consulta:
SQL> SELECT last-name, hire-date FROM employees WHERE (dept-id, hire-date) IN ( SELECT dept-id, MAX(hire-date) FROM employees JOIN departments USING(dept-id) WHERE location-id = 1700 GROUP BY dept-id);
¿Cuál es el resultado?
(A) Ejecuta pero no da el resultado correcto.
(B) Se ejecuta y da el resultado correcto.
(C) Genera un error por comparación por pares.
(D) Genera un error porque la cláusula GROUP BY no se puede usar con combinaciones de tablas en una subconsulta
Respuesta: (B)
Explicación: La consulta dada usa la siguiente consulta interna.
SELECT dept-id, MAX(hire-date) FROM employees JOIN departments USING(dept-id) WHERE location-id = 1700 GROUP BY dept-id
La consulta interna produce la última fecha máxima de contratación en cada departamento ubicado en la identificación de ubicación 1700.
La consulta externa simplemente selecciona todos los pares de consultas internas. Por lo tanto, la consulta produce un resultado correcto.
SELECT last-name, hire-date FROM employees WHERE (dept-id, hire-date) IN (Inner-Query);
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA