下面的题目对应牛客SQL实战的12到18题。
- 获取每个部门中当前员工薪水最高的相关信息select
这个问题有一定的难度,难度主要在要求按部门查找,我在做的过程中出现了以下几次错误,以下是比较典型的两种:
1.select dept_no,dept_emp.emp_no,max(salary) as maxSalary
from dept_emp inner join salaries
on dept_emp.emp_no=salaries.emp_no
group by dept_no
order by dept_no
使用group by后select后面只能接使用聚合函数的列(max(salary))、group by子句后的列(dept_no),对于非聚合的列(dept_emp.emp_no)则只显示其第一条记录。 因此会出错。
2.select dept_no,dept_emp.emp_no,salary as maxSalary
from dept_emp inner join salaries
on dept_emp.emp_no=salaries.emp_no
where salary in
(select max(salary) from
dept_emp inner join salaries
on dept_emp.emp_no=salaries.emp_no
group by dept_no)
order by dept_no
这里主要是一些细节问题没有考虑到,部门d004有员工的工资(非最高)与d002的最高工资相同,即部门d004除了最高工资外,还