部门中薪资超过部门平均薪资的员工姓名及薪资

Posted shuchengyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了部门中薪资超过部门平均薪资的员工姓名及薪资相关的知识,希望对你有一定的参考价值。

部门中薪资超过部门平均薪资的员工姓名及薪资

# 题表

# 建表
create table emp(
  id int not null unique auto_increment,
  name varchar(20) not null,
  sex enum('male','female') not null default 'male', #大部分是男的
  age int(3) unsigned not null default 28,
  hire_date date not null,
  post varchar(50),
  post_comment varchar(100),
  salary double(15,2),
  office int, #一个部门一个屋子
  depart_id int
);

#插入记录
#三个部门:教学,销售,运营
insert into emp(name,sex,age,hire_date,post,salary,office,depart_id) values
('jason','male',18,'20170301','张江第一帅形象代言',7300.33,401,1), #以下是教学部
('egon','male',78,'20150302','teacher',1000000.31,401,1),
('kevin','male',81,'20130305','teacher',8300,401,1),
('tank','male',73,'20140701','teacher',3500,401,1),
('owen','male',28,'20121101','teacher',2100,401,1),
('jerry','female',18,'20110211','teacher',9000,401,1),
('nick','male',18,'19000301','teacher',30000,401,1),
('sean','male',48,'20101111','teacher',10000,401,1),

('歪歪','female',48,'20150311','sale',3000.13,402,2),#以下是销售部门
('丫丫','female',38,'20101101','sale',2000.35,402,2),
('丁丁','female',18,'20110312','sale',1000.37,402,2),
('星星','female',18,'20160513','sale',3000.29,402,2),
('格格','female',28,'20170127','sale',4000.33,402,2),

('张野','male',28,'20160311','operation',10000.13,403,3), #以下是运营部门
('程咬金','male',18,'19970312','operation',20000,403,3),
('程咬银','female',18,'20130311','operation',19000,403,3),
('程咬铜','male',18,'20150411','operation',18000,403,3),
('程咬铁','female',18,'20140512','operation',17000,403,3)
;

#ps:如果在windows系统中,插入中文字符,select的结果为空白,可以将所有字符编码统一设置成gbk
select name,salary,post from 
(
(select name, salary, post from emp ) as t1
inner join
(select post as post2,avg(salary) as avg from emp group by post) as t2 on t1.post = t2.post2
) 
where salary > avg
# 结果:
mysql> select  name,salary,post from                                                                                                             -> (
    -> (select  name, salary, post from emp ) as t1
    -> inner join
    -> (select post as post2,avg(salary) as avg from emp group by post) as t2 on t1.post = t2.post2
    -> ) 
    -> where salary > avg;
+-----------+------------+-----------+
| name      | salary     | post      |
+-----------+------------+-----------+
| egon      | 1000000.31 | teacher   |
| 歪歪      |    3000.13 | sale      |
| 星星      |    3000.29 | sale      |
| 格格      |    4000.33 | sale      |
| 程咬金    |   20000.00 | operation |
| 程咬银    |   19000.00 | operation |
| 程咬铜    |   18000.00 | operation |
| 程咬铁    |   17000.00 | operation |
+-----------+------------+-----------+
8 rows in set (0.00 sec)

以上是关于部门中薪资超过部门平均薪资的员工姓名及薪资的主要内容,如果未能解决你的问题,请参考以下文章

Mysql案例5:取得平均薪资最高的部门的部门名称

Mysql案例6_求平均薪资的等级最低的部门的部门名称

Mysql案例4:要求查询平均薪水最高部门的部门编号

MySQL 子查询使用方式

MySQL 子查询使用方式

盒马员工因“工资泄密”被开除,仲裁部门:双方已达成调解意向