首先,我很抱歉我的英语。
我有2张桌子
EMPLOYEE
DEPARTMENT
我有更多的桌子,但对于我的问题,这已经足够了。
我希望选择每个员工,他/她的部门都有高于平均水平的薪水。
例如,Jane和John在管理部门,Jane有200美元,John有400美元。 Sarah和Kelly在Shipping部门,Sarah有300美元,Kelly有400美元。约翰|管理| 400
凯莉|运输| 400我坚持这个
select name, department_name, pay
from EMPLOYEE
join DEPARTMENT using (department_id)
where pay >= (select avg(pay) from EMPLOYEE, DEPARTMENT
where EMPLOYEE.department_id = ??);
非常感谢您的回答。
答案 0 :(得分:1)
这将帮助您入门。它不是一个完整的答案。
select name, department, pay, avergePay
from EMPLOYEE
join DEPARTMENT using (department_id)
join (
select department_id, avg(pay) averagePay
from EMPLOYEE
join DEPARTMENT using (department_id)
) temp using (department_id)
答案 1 :(得分:0)
您必须将内部子查询链接到外部查询,请记住:为每条记录运行子查询,因此通常应避免使用它们。试试这个。
select name, department_name, pay
from EMPLOYEE e
join DEPARTMENT using (department_id)
where pay >= (select avg(pay) from EMPLOYEE e2, DEPARTMENT
where e2.department_id = e.department_id);