任务:
显示员工的姓氏、薪水,以及他们的经理的姓氏和薪水。我们只对那些在其经理之前被雇用且薪水低于其部门平均水平的员工感兴趣。
代码:
但它没起作用。有谁能帮我理解发生了什么或者给出方向吗?
这是我的表格:
显示员工的姓氏、薪水,以及他们的经理的姓氏和薪水。我们只对那些在其经理之前被雇用且薪水低于其部门平均水平的员工感兴趣。
代码:
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)
- 一个没有部门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)`
但它没起作用。有谁能帮我理解发生了什么或者给出方向吗?
这是我的表格:
![enter image description here](https://istack.dev59.com/JaNyt.webp)