zoukankan      html  css  js  c++  java
  • LeetCode——Department Highest Salary(花式使用IN以及GROUP BY)

    The Employee table holds all employees. Every employee has an Id, a salary, and there is also a column for the department Id.
    
    +----+-------+--------+--------------+
    | Id | Name  | Salary | DepartmentId |
    +----+-------+--------+--------------+
    | 1  | Joe   | 70000  | 1            |
    | 2  | Jim   | 90000  | 1            |
    | 3  | Henry | 80000  | 2            |
    | 4  | Sam   | 60000  | 2            |
    | 5  | Max   | 90000  | 1            |
    +----+-------+--------+--------------+
    The Department table holds all departments of the company.
    
    +----+----------+
    | Id | Name     |
    +----+----------+
    | 1  | IT       |
    | 2  | Sales    |
    +----+----------+
    Write a SQL query to find employees who have the highest salary in each of the departments. For the above tables, your SQL query should return the following rows (order of rows does not matter).
    
    +------------+----------+--------+
    | Department | Employee | Salary |
    +------------+----------+--------+
    | IT         | Max      | 90000  |
    | IT         | Jim      | 90000  |
    | Sales      | Henry    | 80000  |
    +------------+----------+--------+
    

    以前使用IN,都是局限于单个数值使用,从未尝试过多个数据使用IN.
    此题涉及两个表,肯定需要使用join操作.
    此外,需要选取每个Department 的最大数值,那么肯定涉及max以及group by操作.
    综合以上因素,答案如下所示:

    # Write your MySQL query statement below
    SELECT Employee.Name AS Employee, Employee.Salary, Department.Name AS Department 
    FROM Employee, Department 
    WHERE 
        Employee.DepartmentId = Department.Id
        AND (Employee.DepartmentId, Employee.Salary)
        IN 
            (SELECT Employee.DepartmentId, max(Employee.Salary)
             FROM Employee
             GROUP BY Employee.DepartmentId);
    
  • 相关阅读:
    Capture CIS:Capture was not found错误
    Memcached FAQ
    MTK META工具的使用和注意事项(MT6252)
    关于maps.google.com和ditu.google.cn地图偏差的说明
    VSS2005的二次开发
    同学PB经历的面试题
    给定一个字符串,包含中文字符和英文字符,取给定大小字节的子串。
    一些笔试题目和整理的答案 腾讯(Tencent)
    redhat面试题目
    Ubuntu远程链接Ubuntu之ssh
  • 原文地址:https://www.cnblogs.com/jason1990/p/11646434.html
Copyright © 2011-2022 走看看