获取所有部门中当前(dept_emp.to_date = ‘9999-01-01’)员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary
CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`from_date`));
1.筛选每个部门的最高工资
2.最高工资对应dept_no,emp_no
解法一:(如果同部门有多条同等最大salary,一起显示出来)
select r.dept_no,ss.emp_no,r.maxSalary from (select d.dept_no,max(s.salary)as maxSalary from dept_emp d,salaries swhere d.emp_no=s.emp_noand d.to_date='9999-01-01'and s.to_date='9999-01-01'group by d.dept_no)as r,salaries ss,dept_emp ddwhere r.maxSalary=ss.salaryand r.dept_no=dd.dept_noand dd.emp_no=ss.emp_noand ss.to_date='9999-01-01'and dd.to_date='9999-01-01'order by r.dept_no asc
解法二:(如果同部门有多条同等最大salary,仅显示一条)
select r.dept_no,r.emp_no,max(r.salary) from (select d.dept_no,d.emp_no,s.salary from dept_emp d,salaries swhere d.emp_no=s.emp_noand d.to_date='9999-01-01'and s.to_date='9999-01-01'order by s.salary desc)as rgroup by r.dept_noorder by r.dept_no asc
