MySQL之选择各部门工资最高的员工

首先看问题:创建Employee 表,包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。
那么我们先建立Employee表,SQL语句为
在这里插入图片描述
结果为在这里插入图片描述
再创建Department 表,包含公司所有部门的信息。
SQL语句为
在这里插入图片描述
结果为
在这里插入图片描述
问题要求:编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。
这个问题可以采用表别名以及表连接的方法(INNER JOIN)进行解决
如下SQL语句
在这里插入图片描述
结果为
在这里插入图片描述
完整代码:

CREATE TABLE IF NOT EXISTS Employee(
		Id INT PRIMARY KEY,
		Name varchar(10) NOT NULL,
		Salary FLOAT NOT NULL,
		DepartmentId INT NOT NULL
)Engine=Innodb;
INSERT INTO Employee VALUES(1,'Joe',70000,1);
INSERT INTO Employee VALUES(2,'Henry',80000,2);
INSERT INTO Employee VALUES(3,'Sam',60000,2);
INSERT INTO Employee VALUES(4,'Max',90000,1);*/

CREATE TABLE IF NOT EXISTS Department(
		Id INT PRIMARY KEY,
		Name varchar(10) NOT NULL
)Engine=Innodb;
INSERT INTO Department VALUES(1,'IT');
INSERT INTO Department VALUES(2,'Sales');

#选择工资最高的员工
#方法1
SELECT D.Name as Department, E1.Name as Employee, E1.Salary as Salary
FROM Employee E1 join Department D
WHERE E1.DepartmentId = D.Id and E1.Salary >= (SELECT MAX(Salary) from Employee E2 WHERE E1.DepartmentId = E2.DepartmentId);

猜你喜欢

转载自blog.csdn.net/sun_xiao_kai/article/details/88087704