这题主要分为三个步骤:

1.联合查询部门下的员工最大的薪资

select 	e.dept_no,
		max(s.salary)
		from dept_emp e
		left join salaries s
		on e.emp_no = s.emp_no
		group by dept_no

2.根据上边查询到的dept_no 和 salary作为查询条件,进行过滤,找到差缺的emp_no信息即可

select  e.dept_no,
        e.emp_no,
        s.salary
        from dept_emp as e
        left join salaries as s
        on e.emp_no = s.emp_no
        where(e.dept_no,s.salary) in (
            select 	e.dept_no,
		            max(s.salary)
		            from dept_emp e
		            left join salaries s
		            on e.emp_no = s.emp_no
		            group by dept_no
        );

3.根据题意,最后还要按照dept_no升序排序

# 先聚合查询部门下的最大员工薪资
# 在联合查询所有的信息,同时限定条件为上边查到的内容
# 最后按照dept_no升序排序即可
select  e.dept_no,
        e.emp_no,
        s.salary
        from dept_emp as e
        left join salaries as s
        on e.emp_no = s.emp_no
        where(e.dept_no,s.salary) in (
            select 	e.dept_no,
		            max(s.salary)
		            from dept_emp e
		            left join salaries s
		            on e.emp_no = s.emp_no
		            group by dept_no
        )
        order by e.dept_no asc;