获取所有部门中当前(dept_emp.to_date = ‘9999-01-01’)员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary

    1. CREATE TABLE `dept_emp` (
    2. `emp_no` int(11) NOT NULL,
    3. `dept_no` char(4) NOT NULL,
    4. `from_date` date NOT NULL,
    5. `to_date` date NOT NULL,
    6. PRIMARY KEY (`emp_no`,`dept_no`));
    7. CREATE TABLE `salaries` (
    8. `emp_no` int(11) NOT NULL,
    9. `salary` int(11) NOT NULL,
    10. `from_date` date NOT NULL,
    11. `to_date` date NOT NULL,
    12. PRIMARY KEY (`emp_no`,`from_date`));

    1.筛选每个部门的最高工资

    2.最高工资对应dept_no,emp_no

    解法一:(如果同部门有多条同等最大salary,一起显示出来)

    1. select r.dept_no,ss.emp_no,r.maxSalary from (
    2. select d.dept_no,max(s.salary)as maxSalary from dept_emp d,salaries s
    3. where d.emp_no=s.emp_no
    4. and d.to_date='9999-01-01'
    5. and s.to_date='9999-01-01'
    6. group by d.dept_no
    7. )as r,salaries ss,dept_emp dd
    8. where r.maxSalary=ss.salary
    9. and r.dept_no=dd.dept_no
    10. and dd.emp_no=ss.emp_no
    11. and ss.to_date='9999-01-01'
    12. and dd.to_date='9999-01-01'
    13. order by r.dept_no asc

    解法二:(如果同部门有多条同等最大salary,仅显示一条)

    1. select r.dept_no,r.emp_no,max(r.salary) from (
    2. select d.dept_no,d.emp_no,s.salary from dept_emp d,salaries s
    3. where d.emp_no=s.emp_no
    4. and d.to_date='9999-01-01'
    5. and s.to_date='9999-01-01'
    6. order by s.salary desc
    7. )as r
    8. group by r.dept_no
    9. order by r.dept_no asc