设为首页 加入收藏

TOP

LeetCode——Department Highest Salary(花式使用IN以及GROUP BY)
2019-10-10 11:17:53 】 浏览:58
Tags:LeetCode Department Highest Salary 花式 使用 以及 GROUP
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);
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇LeetCode——Customers Who Never.. 下一篇Oracle数据导出导入(PL/SQL工具)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目