📜  门| GATE-CS-2014-(Set-1) |第 65 题

📅  最后修改于: 2021-09-24 06:19:10             🧑  作者: Mango

鉴于以下架构:

employees(emp-id, first-name, last-name, hire-date, dept-id, salary)
     departments(dept-id, dept-name, manager-id, location-id) 

您想在位置 ID 1700 中显示其各自部门中所有最新员工的姓氏和雇用日期。您发出以下查询:

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

结果如何?
(A)它执行但没有给出正确的结果。
(B)它执行并给出正确的结果。
(C)由于成对比较而产生错误。
(D)产生错误,因为 GROUP BY 子句不能与子查询中的表连接一起使用答案:(乙)
说明:给定的查询使用以下内部查询。

SELECT dept-id, MAX(hire-date)
     FROM employees JOIN departments USING(dept-id)
     WHERE location-id = 1700
     GROUP BY dept-id

内部查询在位于位置 id 1700 的每个部门中生成最后一个最大雇用日期。

外部查询只是选择所有的内部查询对。因此,查询产生正确的结果。

SELECT last-name, hire-date
     FROM employees
     WHERE (dept-id, hire-date) IN
     (Inner-Query); 

这个问题的测验