最近正好有点时间,就整理了一下牛客网上的数据库SQL实战中的题,里面的每一道题我都亲自编写并运行了一下,有的题可能不止一个解,并且有些做了备注与分析。这里的题很具有代表性,对...
12、获取所有部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary, 当前表示to_date='9999-01-01'
------------ 作者 还是遗漏了 部门内 有员工薪资一样的情况 ,group by 只会取其中一个 ,导致遗漏人员 。可以修改如下:
思路: 将每个部门,最高薪 做成一张临时表 然后 再关联 员工表,薪资表, 然后取出符合薪资,部门的 员工。
SELECT
e.dept_no,
e.emp_no,
s.salary
FROM
dept_emp e
INNER JOIN salaries s ON e.emp_no = s.emp_no
INNER JOIN (
SELECT
dept_no,
max( salary ) AS sal
FROM
salaries
INNER JOIN dept_emp ON salaries.emp_no = dept_emp.emp_no
WHERE
dept_emp.to_date = '9999-01-01'
GROUP BY
dept_no
) a ON a.dept_no = e.dept_no
WHERE
s.to_date = '9999-01-01'
AND s.salary = a.sal;
《数据库SQL实战》全部答案最近正好有点时间,就整理了一下牛客网上的数据库SQL实战中的题,里面的每一道题我都亲自编写并运行了一下,有的题可能不止一个解,并且有些做了备注与分析。这里的题很具有代表性,对...