问题:
- 给定 Employee 和 AnnualReviews 表,编写一个查询以返回所有从未接受过按 HireDate 排序的评论的员工。
- 编写一个查询来计算仍在公司工作的任期最长和任期最短的员工之间的差异(以天为单位)
- 根据上面的员工表,编写一个查询来计算公司没有雇用或解雇任何人的最长时间(以天为单位)
这是我在问题1中的查询,请帮助纠正并请帮助我在问题2,3中编写查询:
Select *,
annualreviews.reviewdate
From employees
Join annualreviews
On employees.ID = annualreviews.ID
Where reviewdate is null;
你的错误#1:你正在寻找没有日期的评论,而你应该寻找缺失的评论。我们通常检查存在性[NOT] IN
or [NOT] EXISTS
,不使用连接。
您的错误 #2:您加入时使用了错误的 ID。评论 ID 不是员工 ID,因此:employees.ID = annualreviews.ID
应该敲响警钟。
您正在寻找的简单查询:
select *
from employees
where id not in (select empid from annualreviews)
order by hiredate;
同样的事情与NOT EXISTS
:
select *
from employees e
where not exists (select null from annualreviews r where r.empid = e.id)
order by hiredate;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)