sql - 在 Postgres 中不工作的金额字段上的自我加入
问题描述
使用以下数据,我试图让相同位置和部门的员工类型为经理,其工资等于其他员工的总和
EMP_Name EMP_Loc EMP_Dept EMP_Sal Emp_type
Arjun Hyd Comp 1000 Manager
Ramesh Hyd Comp 500 Interim
Ragav Hyd Comp 300 Interim
Rajesh Hyd Comp 200 Interim
我已经尝试过这种方式并正确返回记录,但是如果有大量数据,这样做是否正确?
select a.emp_dept , a.emp_loc ,a.emp_dept,b.emp_dept
from
(select sum(emp_sal) as sett,emp_loc,emp_dept
from employee
where emp_type = 'Interim'
group by emp_loc,emp_dept
) a
inner join
(select emp_sal ,emp_loc,emp_dept
from employee
where emp_type = 'Manager'
) b
on a.sett=b.emp_sal and a.emp_loc=b.emp_loc and a.emp_dept=b.emp_dept;
解决方案
使用以下数据,我试图让相同位置和部门的员工类型为经理,其工资等于其他员工的总和
您需要一个相关性子句:
select *
from employee e
where e.emp_sal = (select sum(e2.emp_sal)
from employee e2
where e2.emp_type = 'Interim' and
e2.EMP_Loc = e.EMP_Loc and
e2.EMP_Dept = e.EMP_Dept
) and
e.emp_type = 'Manager';
出于性能考虑,您需要在(emp_loc, emp_dept, empt_type, salary)
.
推荐阅读
- php - 使用 Spatie/Image Package 和 Filerobot 进行图像优化
- python - 为什么在循环条件中使用赋值表达式会存储布尔值?
- ns2 - 无法读取 ftp2 没有这样的变量
- python - 如何使用时钟密码将时钟时间值解密为文本?
- asp.net - docker run 正在停止
- javascript - Thingworx 的 ThreeJS 扩展
- python - 如何使用 replit 数据库保存有关使用 discord.py 的玩家的信息?
- python - 如何将嵌套 JSON 格式化为迭代过程格式
- arrays - 尝试对数组进行排序,但第一个元素被省略并替换为数组的长度。(C++ 使用 Hoare 的变体进行快速排序)
- java - 我不知道为什么不能自动接线。找不到“ObjectMapper”类型的 bean。(注释错误)