计算每个员工的关系(员工薪水)/(离职人员的工资贡献)

时间:2016-09-11 20:15:49

标签: mysql

我从SQL开始,我坚持以下练习:

  

计算每个员工百分比他的工资(工资+   佣金)代表该部门的总贡献工资   他工作。

我的计划如下:

OCI error on require

我的尝试是这样的:

SELECT employee.last_name, temp1.department_id AS department, wage/deptwage*100 AS "%wage/deptwage"
FROM employee, 
(SELECT department_id, SUM(salary+COALESCE(commission, 0)) AS deptwage
FROM employee
GROUP BY department_id ) temp1,
(SELECT last_name, (salary+COALESCE(commission, 0)) AS wage
FROM employee ) temp2
WHERE temp1.department_id=employee.department_id

执行查询后,我基本上得到了这个,有1024行:

enter image description here

1024来自32 * 32:它为每位员工执行32次工资/ deptwage * 100(这是员工总数)。

我尝试编写新脚本没有成功,所以我非常感谢您对此提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以通过加入来执行此操作:

SELECT      employee.last_name, 
            dep.department_id AS department, 
            (salary+COALESCE(commission, 0))*100/deptwage AS "%wage/deptwage"
FROM        employee
inner join (SELECT   department_id, 
                     SUM(salary+COALESCE(commission, 0)) AS deptwage
            FROM     employee
            GROUP BY department_id
           ) dep
        on  dep.department_id = employee.department_id

答案 1 :(得分:1)

你需要删除第3个表并加入前2个:

SELECT 
    e.last_name, 
    d.department_id AS department, 
    -- wage/deptwage*100 AS "%wage/deptwage", -- remove this
    (e.salary + COALESCE(e.commission, 0)) / (d.deptwage * 100) as "% wage/deptwage"
FROM 
    employee e
JOIN
    (SELECT Employee_ID, department_id, SUM(salary + COALESCE(commission, 0)) AS deptwage
    FROM employee
    GROUP BY department_id) d
ON 
    e.Employee_ID = d.Employee_ID
WHERE 
    d.department_id = e.department_id