大门|大门-CS-2014-(第1组)|问题65

考虑到以下模式:

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

这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享