基于给定3张表编写Oracle SQL按部门查询每位员工薪资的方法
Oracle SQL 按部门维度查询员工薪资实现
表关联逻辑
Emp表存储员工基础信息及薪资数据,Works表为员工与部门的关联中间表(支持员工兼职多部门的场景,pct_time为员工在该部门的任职时长占比),Dept表存储部门基础信息- 三张表通过
Emp.eid = Works.eid、Works.did = Dept.did关联
查询SQL
如果需要全量展示部门对应所有在职员工的薪资数据,可直接用内连接关联三张表:
SELECT d.did AS 部门ID, d.dname AS 部门名称, e.eid AS 员工ID, e.ename AS 员工姓名, e.salary AS 员工总薪资, -- 如果需要计算员工在当前部门的折算薪资,可打开下一行注释 -- ROUND(e.salary * w.pct_time / 100, 2) AS 部门折算薪资, w.pct_time AS 部门任职占比 FROM Emp e INNER JOIN Works w ON e.eid = w.eid INNER JOIN Dept d ON w.did = d.did ORDER BY d.did ASC, e.salary DESC;
如果需要包含还没有员工的部门,可将Dept表放在左侧,改用左连接关联即可。
内容的提问来源于stack exchange,提问作者shreya patil
相关产品推荐
相关产品推荐

