有两张表: 雇员表 EMPLOYEES,部门表 DEPARTMENTS.EMPLOYEES有name列,有salary(工资)列,有department_id列。DEPARTMENTS有department_id列和department_name列。想用个sql语句,查出department_name为“abc”,salary大于本部门平均工资的员工的名字。我自己写了好几次,总有问题,请教高手!
调试欢乐多
FROM EMPLOYEES A, EMPLOYEES B
WHERE A.department_i=B.department_i
AND A.salary>B.salary;
select
e.[name]
from
[EMPLOYEES] e, [DEPARTMENTS] d
where
e.[department_id] = d.[department_id]
and e.[salary] > (select sum(salary) from [EMPLOYEES]) / (select count(salary) from [EMPLOYEES])
and d.[department_name] = 'abc'
见到高人了~可是为什么用不上departments表呢,不用departments表怎么比较department_name是否为“abc”?另外,请问有没办法把两句话合一下?谢谢~
FROM EMPLOYEES emp,
(
SELECT DEPARTMENT_ID,
AVG(SALARY) AS AVG_SAL
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID
) sal,
DEPARTMENTS dept
WHERE emp.DEPARTMENT_ID = sal.DEPARTMENT_ID
AND emp.DEPARTMENT_ID = dept.DEPARTMENT_ID
AND emp.SALARY > sal.AVG_SAL
AND dept.DEPARTMENT_NAME = 'abc'
select
e.[name]
from
[EMPLOYEES] e, [DEPARTMENTS] d
where
e.[department_id] = d.[department_id]
and e.[salary] > (select avg(salary) from [EMPLOYEES])
and d.[department_name] = 'abc'