2012-12-19 164 views
0

我需要檢索獲得比其部門的平均工資更多錢的員工的信息...我們有部門名爲10,20,30,40,50 ......等等上。在這裏,我設法找回了我只需要一個部門的東西。 (40)我可以如何爲多個部門做到這一點?從表中檢索信息

這是我的查詢:

SELECT * FROM EMPLOYEE where (Department_ID='40')and 
(
employee_salary > 
    (select avg(employee_salary) from EMPLOYEE where Department_ID='40') 
) 

Datatabledata table

+0

與你的表結構提供第一。 –

+0

https://www.dropbox.com/s/gqoatxyglgllapr/Untitled.png – user1915345

回答

4

希望這會做,

SELECT emp.* FROM EMPLOYEE emp where emp.employee_salary > 
     ( select avg(employee_salary) from EMPLOYEE new1 
     where emp.Department_ID=new1.Department_ID 
     group by Department_ID 
    ) 
+0

非常感謝您的幫助!所以你創建了兩個表來進行比較?我對嗎? – user1915345

+0

@ user1915345他沒有創建2個表格。他正在使用同一張表,並使用不同的別名。所以表格實際上只是比較自己。 –

+0

好吧,我想我現在明白了......感謝您的解釋! – user1915345

0

嘗試此查詢

select * from EMPLOYEE as e1 
where e1.employee_salary > (select avg(employee_salary) 
         from EMPLOYEE as e2 
         where e1.department_id=e2.department_id 
         group by Department_id) 
0

你可以試試這個:

SELECT *, avg(employee_salary) as average_salary 
FROM EMPLOYEE 
where Department_ID='40' 
having average_salary<employee_salary 
0
select e.* from employee as e inner join 
    (select department_id, avg(employee_salary) as avg_salary 
     from employee group by department_id) as f 
on e.department_id = f.department_id 
where e.employee_salary > f.avg_salary;