SQL實現(xiàn)LeetCode(184.系里最高薪水)
[LeetCode] 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 |
+------------+----------+--------+
這道題讓給了我們兩張表,Employee表和Department表,讓我們找系里面薪水最高的人的,實際上這題是Second Highest Salary和Combine Two Tables的結(jié)合題,我們既需要聯(lián)合兩表,又要找到最高薪水,那么我們首先讓兩個表內(nèi)交起來,然后將結(jié)果表需要的列都標(biāo)明,然后就是要找最高的薪水,我們用Max關(guān)鍵字來實現(xiàn),參見代碼如下:
解法一:
SELECT d.Name AS Department, e1.Name AS Employee, e1.Salary FROM Employee e1 JOIN Department d ON e1.DepartmentId = d.Id WHERE Salary IN (SELECT MAX(Salary) FROM Employee e2 WHERE e1.DepartmentId = e2.DepartmentId);
我們也可以不用Join關(guān)鍵字,直接用Where將兩表連起來,然后找最高薪水的方法和上面相同:
解法二:
SELECT d.Name AS Department, e.Name AS Employee, e.Salary FROM Employee e, Department d WHERE e.DepartmentId = d.Id AND e.Salary = (SELECT MAX(Salary) FROM Employee e2 WHERE e2.DepartmentId = d.Id);
下面這種方法沒用用到Max關(guān)鍵字,而是用了>=符號,實現(xiàn)的效果跟Max關(guān)鍵字相同,參見代碼如下:
解法三:
SELECT d.Name AS Department, e.Name AS Employee, e.Salary FROM Employee e, Department d WHERE e.DepartmentId = d.Id AND e.Salary >= ALL (SELECT Salary FROM Employee e2 WHERE e2.DepartmentId = d.Id);
類似題目:
到此這篇關(guān)于SQL實現(xiàn)LeetCode(184.系里最高薪水)的文章就介紹到這了,更多相關(guān)SQL實現(xiàn)系里最高薪水內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫基本SQL語句教程之高級操作
對MySQL數(shù)據(jù)庫的查詢,除了基本的查詢外,有時候需要對查詢的結(jié)果集進(jìn)行處理,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫基本SQL語句教程之高級操作的相關(guān)資料,需要的朋友可以參考下2022-06-06
圖文詳解Mysql使用left?join寫查詢語句執(zhí)行很慢問題的解決
最近工作中遇到一個非常奇怪的問題,mysql中有兩張表,test_info和test_do_info需要進(jìn)行LEFT?JOIN關(guān)聯(lián)查詢,下面這篇文章主要給大家介紹了關(guān)于Mysql使用left?join寫查詢語句執(zhí)行很慢問題的解決方法2023-04-04
Windows下MySQL8.0.11社區(qū)綠色版安裝步驟圖解
在本教程中使用MySQL最新的MySQL服務(wù)8.0.11的社區(qū)綠色版本進(jìn)行安裝,綠色版為zip格式的包,安裝步驟分為四大步驟,具體哪四大步驟大家跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05
安裝MySQL 5后無法啟動(不能Start service)解決方法小結(jié)
有時候我們在安裝mysql軟件時,卻無法啟動,或服務(wù)器安全設(shè)置以后都可能導(dǎo)致mysql無法運行2012-07-07
解決MySQL登錄報錯1130:1130?Host?***.***.***.***?is?not?allowe
有時候在登錄到MySQL服務(wù)器時會遇到1130錯誤,這是因為無法連接到MySQL服務(wù)器或其他一些原因,這篇文章主要給大家介紹了關(guān)于解決MySQL登錄報錯1130:1130?Host?***.***.***.***?is?not?allowed?to?connect?to?this?MySQL?server的相關(guān)資料,需要的朋友可以參考下2023-12-12
mysql簡單實現(xiàn)查詢結(jié)果添加序列號的方法
這篇文章主要介紹了mysql簡單實現(xiàn)查詢結(jié)果添加序列號的方法,結(jié)合實例形式演示了2種查詢結(jié)果添加序列號的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2016-06-06

