zoukankan      html  css  js  c++  java
  • Q200510-01: 求部门工资最高的员工

    问题: 求部门工资最高的员工

    Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。

    +----+-------+--------+--------------+

    | Id | Name  | Salary | DepartmentId |

    +----+-------+--------+--------------+

    | 1  | Joe   | 70000  | 1            |

    | 2  | Henry | 80000  | 2            |

    | 3  | Sam   | 60000  | 2            |

    | 4  | Max   | 90000  | 1            |

    +----+-------+--------+--------------+

    Department 表包含公司所有部门的信息。

    +----+----------+

    | Id | Name     |

    +----+----------+

    | 1  | IT       |

    | 2  | Sales    |

    编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。

    +------------+----------+--------+

    | Department | Employee | Salary |

    +------------+----------+--------+

    | IT         | Max      | 90000  |

    | Sales      | Henry    | 80000  |

    +------------+----------+--------+

    解答:

    mysql> select d.name as department,b.name as employee,b.salary from (select e.* from employee e inner join
        -> (select max(salary) as max_salary,departmentid from employee group by departmentid) a
        -> on e.salary=a.max_salary and e.departmentid=a.departmentid) b left join department d
        -> on b.departmentid=d.id ;
    +------------+----------+--------+
    | department | employee | salary |
    +------------+----------+--------+
    | Sales      | Henry    |  80000 |
    | IT         | Max      |  90000 |
    +------------+----------+--------+
    2 rows in set (0.00 sec)

    过程:

    create table employee(
        id int,
        name varchar(20) not null,
        salary int,
        departmentid int not null,
        primary key(id))
        
    insert into employee(id,name,salary,departmentid) values ('1','Joe','70000','1');
    insert into employee(id,name,salary,departmentid) values ('2','Henry','80000','2');
    insert into employee(id,name,salary,departmentid) values ('3','Sam','60000','2');
    insert into employee(id,name,salary,departmentid) values ('4','Max','90000','1');
        
    create table department(
        id int,
        name varchar(20) not null,
        primary key(id))
        
    insert into department(id,name) values('1','IT');
    insert into department(id,name) values('2','Sales');
    
    select max(salary) as max_salary,departmentid from employee group by departmentid
    
    select e.* from employee e inner join 
    (select max(salary) as max_salary,departmentid from employee group by departmentid) a
    on e.salary=a.max_salary and e.departmentid=a.departmentid
    
    select b.id,b.name,b.salary,d.name from (select e.* from employee e inner join 
    (select max(salary) as max_salary,departmentid from employee group by departmentid) a
    on e.salary=a.max_salary and e.departmentid=a.departmentid) b left join department d
    on b.departmentid=d.id 
    
    select d.name as department,b.name as employee,b.salary from (select e.* from employee e inner join 
    (select max(salary) as max_salary,departmentid from employee group by departmentid) a
    on e.salary=a.max_salary and e.departmentid=a.departmentid) b left join department d
    on b.departmentid=d.id 

    --2020年5月10日 17点22分--

    1.       部门工资最高的员工

    Employee 表包含所有员工信息,每个员工有其对应的 Id, salary department Id

     

    +----+-------+--------+--------------+

    | Id | Name  | Salary | DepartmentId |

    +----+-------+--------+--------------+

    | 1  | Joe   | 70000  | 1            |

    | 2  | Henry | 80000  | 2            |

    | 3  | Sam   | 60000  | 2            |

    | 4  | Max   | 90000  | 1            |

    +----+-------+--------+--------------+

    Department 表包含公司所有部门的信息。

     

    +----+----------+

    | Id | Name     |

    +----+----------+

    | 1  | IT       |

    | 2  | Sales    |

     

    编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max IT 部门有最高工资,Henry Sales 部门有最高工资。

     

    +------------+----------+--------+

    | Department | Employee | Salary |

    +------------+----------+--------+

    | IT         | Max      | 90000  |

    | Sales      | Henry    | 80000  |

    +------------+----------+--------+

  • 相关阅读:
    小编见过的验证方式汇总
    Burp Suite Professional 针对APP抓包篡改数据提交【安全】
    关于Chrome 67 以后版本无法离线安装扩展的解决方法
    Postman 中上传图片的接口怎么做参数化呢?
    字符串-不同的编码格式下所占用的字节数【转】
    Java RandomAccessFile用法 【转】
    URI和URL的区别 【转】
    Java多线程-线程的同步与锁【转】
    浅谈Java多线程的同步问题 【转】
    Java中浮点数的精度问题 【转】
  • 原文地址:https://www.cnblogs.com/heyang78/p/12864230.html
Copyright © 2011-2022 走看看