【发布时间】:2019-02-08 17:42:53
【问题描述】:
任务:
显示员工的姓氏、员工的薪水及其经理 姓氏和薪水。我们只对那些 在他们的经理之前被雇用并且薪水低于平均水平 他们的部门。
代码:
select e.last_name, e.salary, e.hire_date, e.department_id,
m.last_name, m.salary, m.hire_date
from employees e
join employees m on (e.manager_id=m.employee_id)
where e.salary <(select avg(e.salary)
from employees e
where e.department_id=e.department_id)
and e.hire_date < m.hire_date
问题:
我对结果有疑问。其中我得到了
- 一名员工 工资等于部门平均水平 (Rajs)
- 一名员工没有 department_id (Grant)
- 在单人部门 (Whalen) 工作的一名员工。
但是,当我将e.salary < (select avg(e.salary)... 之间的< 运算符更改为相反的> 时(假设这次我们对那些薪水高于部门平均水平的人感兴趣),结果是正确的。
我不明白为什么它会以这种方式工作?我试图通过添加这一行来解决这个问题
and e.salary<>(select avg(e.salary)
from employees e
where e.department_id=e.department_id)`
但它不起作用。任何人都可以帮助我了解正在发生的事情或只是说明方向吗?
【问题讨论】:
-
来自新用户的一个好问题,您可以在其中显示问题、代码和一些数据。下次如果可以avoid screenshots 那就完美了。为我 +1。