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


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

    # 题表
    
    # 建表
    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)
    
  • 相关阅读:
    认证授权
    shell
    web漏洞
    java总结
    gp表和mapping表的使用
    循环发送消息器
    Arduino学习笔记
    正则表达式(绝对干货,亲测可用)
    springboot 错误求解决
    jdbc连接数据库以及crud(简单易懂,本人亲测可用 有源代码和数据库)
  • 原文地址:https://www.cnblogs.com/shuchengyi/p/10871445.html
Copyright © 2020-2023  润新知