我从SQL开始,我坚持以下练习:
计算每个员工百分比他的工资(工资+ 佣金)代表该部门的总贡献工资 他工作。
我的计划如下:
我的尝试是这样的:
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行:
1024来自32 * 32:它为每位员工执行32次工资/ deptwage * 100(这是员工总数)。
我尝试编写新脚本没有成功,所以我非常感谢您对此提供的任何帮助。
答案 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