zoukankan      html  css  js  c++  java
  • 部门中薪资超过部门平均薪资的员工姓名及薪资

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

    # 题表
    
    # 建表
    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)
    
  • 相关阅读:
    hdu 6702 ^&^ 位运算
    hdu 6709 Fishing Master 贪心
    hdu 6704 K-th occurrence 二分 ST表 后缀数组 主席树
    hdu 1423 Greatest Common Increasing Subsequence 最长公共上升子序列 LCIS
    hdu 5909 Tree Cutting FWT
    luogu P1588 丢失的牛 宽搜
    luogu P1003 铺地毯
    luogu P1104 生日
    luogu P1094 纪念品分组
    luogu P1093 奖学金
  • 原文地址:https://www.cnblogs.com/shuchengyi/p/10871445.html
Copyright © 2011-2022 走看看