Oracle SQL - 计算部门的平均工资并选择所有高于平均水平的工资

时间:2014-10-21 19:35:49

标签: sql oracle

首先,我很抱歉我的英语。

我有2张桌子

EMPLOYEE

  • 名称
  • 付费
  • 部门标识

DEPARTMENT

  • 部门标识
  • DEPARTMENT_NAME

我有更多的桌子,但对于我的问题,这已经足够了。

我希望选择每个员工,他/她的部门都有高于平均水平的薪水。

例如,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 = ??);

非常感谢您的回答。

2 个答案:

答案 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);