题目:
获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号dept_no升序排列
解题:
第一步,按照部门分组查询员工及其薪水信息
SELECT de.dept_no, de.emp_no, s.salary maxSalary FROM dept_emp de,
salaries s WHERE de.emp_no = s.emp_no GROUP BY de.dept_no
第二步,筛选出各分组中最高薪水的员工信息
SELECT de.dept_no, de.emp_no, s.salary maxSalary FROM dept_emp de,
salaries s WHERE de.emp_no = s.emp_no GROUP BY de.dept_no HAVING s.salary = MAX(s.salary) ORDER BY de.dept_no
遇到的问题:
误以为order by s.salary desc能进行分组内部筛选,其实它是将各个分组呈现的第一条们进行排序,
having才是进行分组内部筛选的关键字。