[LeetCode] Department Highest Salary -- 資料庫知識(mysql)

來源:互聯網
上載者:User

標籤:tables   rtm   write   find   any   weight   nbsp   employee   mysql   

184. Department Highest Salary

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  | Henry | 80000  | 2            || 3  | Sam   | 60000  | 2            || 4  | 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, Max has the highest salary in the IT department and Henry has the highest salary in the Sales department.

+------------+----------+--------+| Department | Employee | Salary |+------------+----------+--------+| IT         | Max      | 90000  || Sales      | Henry    | 80000  |+------------+----------+--------+

解答一:

SELECT D.Name AS Department ,E.Name AS Employee ,E.Salary from     Employee E,    Department D WHERE E.DepartmentId = D.id   AND (E.DepartmentId,E.Salary) in   (SELECT DepartmentId,max(Salary) as max FROM Employee GROUP BY DepartmentId)

解題思路是利用WHERE串連子句來構造篩選條件,子句匯中構造了一個新的表max,用到了IN操作符來選擇DepartmentId 和Salary,group by 用來根據DepartmentId分組以便分別

求每個系的最高薪水。

解答二:

SELECT D.Name AS Department ,E.Name AS Employee ,E.Salary FROM    Employee E,    (SELECT DepartmentId,max(Salary) as max FROM Employee GROUP BY DepartmentId) T,    Department DWHERE E.DepartmentId = T.DepartmentId   AND E.Salary = T.max  AND E.DepartmentId = D.id

和一稍有不同,直接從三個表中選取,將新構造的表放到了FROM子句裡邊,其他直接以別名取代,以and串連三個條件。

 

[LeetCode] Department Highest Salary -- 資料庫知識(mysql)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.