逐步拆解详细教学
- 题目让我们求每个部门中当前员工薪水最高的相关信息,在已知的两个表中,salaries表告诉我们员工的编号还有工资,dept_emp表则关联了员工的编号和所在的部门。
- 既然是求每个部门薪水最高的员工,那么我们第一步需要知道每个部门最高的薪水是多少?
-- 获取每个部门的最高薪资 select d.dept_no,max(salary) as maxSalary from dept_emp d join salaries s on d.emp_no = s.emp_no group by d.dept_no;
- 那么接下来我们知道每个部门的最高薪资了,只需要关联到员工身上就行,那么链接条件需要有两个,第一:这个员工的部门编号 第二:员工的工资要和部门最高工资对的上,我们创建一个临时表,用来同时存放员工的工号,部门号还有薪水,方便我们链接
-- 获取每个员工对应的薪水,部门号,工号 SELECT dept_emp.emp_no,dept_emp.dept_no,salaries.salary FROM salaries join dept_emp on salaries.emp_no = dept_emp.emp_no; -- 4. 安装3所述,链接上面两个表即可 -- 连接上面两个表 SELECT deptmax.dept_no, empinfo.emp_no, deptmax.maxSalary FROM ( select d.dept_no,max(salary) as maxSalary from dept_emp d left join salaries s on d.emp_no = s.emp_no group by d.dept_no ) as deptmax join ( SELECT dept_emp.emp_no,dept_emp.dept_no,salaries.salary FROM salaries join dept_emp on salaries.emp_no = dept_emp.emp_no )as empinfo on deptmax.dept_no = empinfo.dept_no and deptmax.maxSalary = empinfo.salary ORDER BY deptmax.dept_no;