计算员工工资和工作组的平均工资之间的差额
问题描述:
给定一个表,如:计算员工工资和工作组的平均工资之间的差额
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;
但我很努力地找到工资和平均值之间的差异。每个职位的薪资。
答
根据您正在使用的数据库,您可以使用窗口函数或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
答
如果您使用的是具有窗口功能(例如,SQL服务器,Oracle,PostgreSQL的)一个DBMS,您可以执行以下操作:
SELECT emp_name, emp_salary - AVG(emp_salary) OVER (PARTITION BY job_title) salary_diff
FROM employee;
这是什么数据库? – OldProgrammer 2015-03-08 22:03:26