获取每个部门中当前员工薪水最高的相关信息

#思路解析:首先我们需要将两个表连在一起才能将提取出dept_no,emp_no,maxSalary三个相对应的数据,但用MAX函数时,对SELECT 查询的列有限制,所以我们需要单独做个表来找到每个部门的最大薪资,就是下面的t2表。有了这个最大的maxSalary我们就可以筛选出想要的一行数据了,但此时并不能用WHERE,因为没有一个完整的表包括emp_no,dept_no,salary三列数据,因此我们需要做一份包含这三列数据的表就是t1,最后我们用dept_no将两个表连接在一起,用AND 的最大工资筛选出所需的数据

SELECT t1.dept_no,t1.emp_no,t2.maxSalary

FROM

(SELECT s.emp_no,dept_no,salary

FROM dept_emp as de

JOIN salaries as s

ON s.emp_no=de.emp_no)as t1

JOIN

(SELECT dept_no,max(salary) as maxSalary

FROM dept_emp as de

JOIN salaries as s

ON s.emp_no=de.emp_no

GROUP BY dept_no) as t2

ON t2.dept_no=t1.dept_no

and t1.salary=t2.maxSalary #注意这句话不能因为t1的salary必须扔掉

ORDER BY t1.dept_no

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值