牛客网sql题:获取每个部门中当前员工薪水最高的相关信息

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

有一个员工表dept_emp简况如下:

有一个薪水表salaries简况如下:

获取所有部门中员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号升序排列,以上例子输出如下:

我的思路:

先查出部门和部门最高工资作为临时表,命名为t;然后和工资表做左连接,条件是相同salary的。

我的sql:

select t.dept_no,sa.emp_no,t.salary maxSalary from salaries as sa left join (select d.dept_no,max(s.salary) from salaries as s inner join dept_emp as d on d.emp_no=s.emp_no group by d.dept_no) as t on t.salary=sa.salary
我这样写有问题吗?编译器报错找不到t.salary:SQL_ERROR_INFO: "Unknown column 't.salary' in 'field list'"

临时表的命名格式不对吗?求大佬帮忙看看咋搞啊

赞自己解决问题!

发现问题了,因为我没有给临时表里查出的salary字段命名,导致查不出t.salary。

以下是无语法错误的sql:

select
t.dept_no,sa.emp_no,t.salary maxSalary
from
salaries as sa
left join
(select
d.dept_no,max(s.salary) salary
from
dept_emp d
inner join
salaries s
on
d.emp_no=s.emp_no
group by
d.dept_no)t
on
t.salary=sa.salary

然后针对这道题,我有个思路不对。其实我不应该用t.salary=sa.salary关联,这么做是有问题的:因为salary可能多个人都是相同的salary,这么做会导致假如和最高薪资重合的员工号(有可能是其他部门的)都会关联进来,与题目说的本部门最高薪资员工不符。

正确思路:关联员工表和薪水表得到表1,求出员工,部门,薪水;

关联员工表和薪水表得到“部门最高薪水表2”,求出最高薪水,部门;

表1表2join on条件:表1.salary=表2.maxSalary and 表1.部门=表2.部门

sql代码:

select
t.dept_no,sa.emp_no,t.salary maxSalary
from
(select 
 d.dept_no,d.emp_no,s.salary
 from
 dept_emp d
 join
 salaries s
 on
 s.emp_no=d.emp_no
)as sa
join
(select
d.dept_no,max(s.salary) salary
from
dept_emp d
inner join
salaries s
on
d.emp_no=s.emp_no
group by
d.dept_no)t
on
t.salary=sa.salary and t.dept_no=sa.dept_no
order by t.dept_no asc