查询每个部门分别是哪个员工获得了其所在部门的最高工资

2025-03-23 06:10:01
推荐回答(3个)
回答1:

获取所有部门中当前(dept_emp.to_date = '9999-01-01')员工当前(salaries.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`));
如插入:
INSERT INTO dept_emp VALUES(10001,'d001','1986-06-26','9999-01-01');
INSERT INTO dept_emp VALUES(10002,'d001','1996-08-03','9999-01-01');
INSERT INTO dept_emp VALUES(10003,'d001','1996-08-03','1997-08-03');

INSERT INTO salaries VALUES(10001,90000,'1986-06-26','1987-06-26');
INSERT INTO salaries VALUES(10001,88958,'2002-06-22','9999-01-01');
INSERT INTO salaries VALUES(10002,72527,'1996-08-03','1997-08-03');
INSERT INTO salaries VALUES(10002,72527,'2000-08-02','2001-08-02');
INSERT INTO salaries VALUES(10002,72527,'2001-08-

回答2:

select a.员工名,a.部门号,max(b.工资数) from EMP a,DEPT b where a.部门号 = b.部门号 group by a.部门号;

回答3:

思路:先求出每个部门的最高工资,再与原表做内连接,只要满足最高工资与原表的工资相等的过滤条件即可
SELECT e.ename,e.sal,e.deptno
FROM emp e join (SELECT deptno,MAX(sal) max_sal
FROM emp
GROUP BY deptno) d
ON e.deptno=d.deptno
where e.sal=d.max_sal