#.查询每个部门薪水最高的人

CREATE TABLE departments (
id int NOT NULL,
name varchar(20) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

CREATE TABLE employees (
id int NOT NULL,
name varchar(20) COLLATE utf8_bin DEFAULT NULL,
department_id int DEFAULT NULL,
salary int DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

insert into departments(id,name)
values(100,‘研发部’),(101,‘市场部’),(102,‘销售部’);

insert into employees(id,name,department_id,salary)
values(2000,‘赵’,100,17000),(2001,‘钱’,101,11000),
(2002,‘孙’,102,11000),
(2003,‘李’,100,8000),
(2004,‘周’,101,11000),
(2005,‘吴’,102,7000),
(2006,‘郑’,100,8000),
(2007,‘王’,101,11000),
(2008,‘冯’,102,12000),
(2009,‘陈’,100,8000),
(2010,‘褚’,101,15000),
(2011,‘卫’,102,12000),
(2012,‘蒋’,101,14000);
#方法1
select t1.id,t1.department_id,t1.name,t1.salary from employees t1 join
(select max(salary) maxsalary, department_id from employees group by department_id) t2
on t1.department_id = t2.department_id and t1.salary=t2.maxsalary;
#方法2
select * from employees e where(e.department_id,e.salary)
in
(select e1.department_id,max(e1.salary)
from employees e1 group by department_id);

select *from employees e where
e.salary =(select max(e1.salary) from employees e1 where e1.department_id = e.department_id) ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值