婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SQL實現LeetCode(176.第二高薪水)

SQL實現LeetCode(176.第二高薪水)

熱門標簽:400電話可以辦理嗎 高清地圖標注道路 大眾點評星級酒店地圖標注 云南電商智能外呼系統價格 話務外呼系統怎么樣 智能外呼系統復位 臨清電話機器人 外東北地圖標注 拉卡拉外呼系統

[LeetCode] 176.Second Highest Salary 第二高薪水

Write a SQL query to get the second highest salary from the Employee table.

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

For example, given the above Employee table, the second highest salary is 200. If there is no second highest salary, then the query should return null.

這道題讓我們找表中某列第二大的數,這道題有很多種解法,先來看一種使用Limit和Offset兩個關鍵字的解法,MySQL中Limit后面的數字限制了我們返回數據的個數,Offset是偏移量,那么如果我們想找第二高薪水,我們首先可以先對薪水進行降序排列,然后我們將Offset設為1,那么就是從第二個開始,也就是第二高薪水,然后我們將Limit設為1,就是只取出第二高薪水,如果將Limit設為2,那么就將第二高和第三高薪水都取出來:

解法一:

SELECT Salary FROM Employee GROUP BY Salary
UNION ALL (SELECT NULL AS Salary)
ORDER BY Salary DESC LIMIT 1 OFFSET 1;

我們也可以使用Max函數來做,這個返回最大值,邏輯是我們取出的不包含最大值的數字中的最大值,即為第二大值:

解法二:

SELECT MAX(Salary) FROM Employee 
WHERE Salary NOT IN
(SELECT MAX(Salary) FROM Employee);

下面這種方法和上面基本一樣,就是用小于號代替了Not in關鍵字,效果相同:

解法三:

SELECT MAX(Salary) FROM Employee
Where Salary 
(SELECT MAX(Salary) FROM Employee);

最后來看一種可以擴展到找到第N高的薪水的方法,只要將下面語句中的1改為N-1即可,第二高的薪水帶入N-1就是1,下面語句的邏輯是,假如我們要找第二高的薪水,那么我們允許其中一個最大值存在,然后在其余的數字中找出最大的,即為整個的第二大的值;

解法四:

SELECT MAX(Salary) FROM Employee E1
WHERE 1 =
(SELECT COUNT(DISTINCT(E2.Salary)) FROM Employee E2
WHERE E2.Salary > E1.Salary);

參考資料:

https://leetcode.com/discuss/47041/very-very-simple-solution

https://leetcode.com/discuss/42849/general-solution-not-using-max

https://leetcode.com/discuss/21751/simple-query-which-handles-the-null-situation

到此這篇關于SQL實現LeetCode(176.第二高薪水)的文章就介紹到這了,更多相關SQL實現第二高薪水內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • SQL實現LeetCode(184.系里最高薪水)
  • SQL實現LeetCode(183.從未下單訂購的顧客)
  • SQL實現LeetCode(182.重復的郵箱)
  • SQL實現LeetCode(181.員工掙得比經理多)
  • SQL實現LeetCode(180.連續的數字)
  • SQL實現LeetCode(178.分數排行)
  • SQL實現LeetCode(177.第N高薪水)
  • SQL實現LeetCode(185.系里前三高薪水)

標簽:溫州 福州 定西 三明 山西 無錫 阿里 揚州

巨人網絡通訊聲明:本文標題《SQL實現LeetCode(176.第二高薪水)》,本文關鍵詞  SQL,實現,LeetCode,176.,第二,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL實現LeetCode(176.第二高薪水)》相關的同類信息!
  • 本頁收集關于SQL實現LeetCode(176.第二高薪水)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 西平县| 故城县| 荥阳市| 陈巴尔虎旗| 宜宾市| 丽江市| 东乡| 资中县| 岚皋县| 双牌县| 美姑县| 金寨县| 陈巴尔虎旗| 建德市| 精河县| 巩留县| 高阳县| 广灵县| 赤壁市| 肃南| 荔波县| 同德县| 台中市| 九寨沟县| 湖南省| 陵水| 北碚区| 黄骅市| 江源县| 安西县| 丹棱县| 昌图县| 靖边县| 江达县| 赫章县| 绥化市| 阜宁县| 驻马店市| 夏邑县| 凭祥市| 江川县|