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

📅  最后修改于: 2021-07-02 17:33:11             🧑  作者: 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子句不能与子查询中的表联接一起使用答案: (B)
说明:给定查询使用下面的内部查询。

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

这个问题的测验