2015-03-08 107 views
0

給定一個表,如:計算員工工資和工作組的平均工資之間的差額

Employee (emp_no, emp_fname, emp_lname, emp_salary, job_title) 

如何編寫一個查詢,對於每個員工計算他/她的工資之間的差額 平均工資他/她的工作組?

爲了得到平均值。我使用的每個組的工資:

Select job_title, avg(emp_salary) as avg_salary 
from employee group by job_title; 

但我很努力地找到工資和平均值之間的差異。每個職位的薪資。

+1

這是什麼數據庫? – OldProgrammer 2015-03-08 22:03:26

回答

3

根據您正在使用的數據庫,您可以使用窗口函數或CTE更高效地實現此目的。但是,這應該工作在SQL解決方案几乎可以使用任何基於SQL的數據庫會是什麼樣子:

SELECT a.emp_no, 
      a.emp_fname, 
      a.emp_lname, 
      a.job_title, 
      (a.emp_salary - b.emp_salary) as salary_difference 
FROM employee AS a 
INNER JOIN (
    SELECT job_title, avg(emp_salary)as emp_salary from employee group by  
      job_title) as b 
    ON a.job_title = b.job_title 
+0

謝謝。這是工作。 :-) – 2015-03-08 23:28:28

+0

很高興聽到它! – evanv 2015-03-09 02:23:52

0

如果您使用的是具有窗口功能(例如,SQL服務器,Oracle,PostgreSQL的)一個DBMS,您可以執行以下操作:

SELECT emp_name, emp_salary - AVG(emp_salary) OVER (PARTITION BY job_title) salary_diff 
    FROM employee;