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

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

SQL實現LeetCode(177.第N高薪水)

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

[LeetCode] 177.Nth Highest Salary 第N高薪水

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

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

For example, given the above Employee table, the nth highest salary where n = 2 is 200. If there is no nth highest salary, then the query should return null.

這道題是之前那道Second Highest Salary的拓展,根據之前那道題的做法,我們可以很容易的將其推展為N,根據對Second Highest Salary中解法一的分析,我們只需要將OFFSET后面的1改為N-1就行了,但是這樣MySQL會報錯,估計不支持運算,那么我們可以在前面加一個SET N = N - 1,將N先變成N-1再做也是一樣的:

解法一:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  SET N = N - 1;
  RETURN (
      SELECT DISTINCT Salary FROM Employee GROUP BY Salary
      ORDER BY Salary DESC LIMIT 1 OFFSET N
  );
END

根據對Second Highest Salary中解法四的分析,我們只需要將其1改為N-1即可,這里卻支持N-1的計算,參見代碼如下:

解法二:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN (
      SELECT MAX(Salary) FROM Employee E1
      WHERE N - 1 =
      (SELECT COUNT(DISTINCT(E2.Salary)) FROM Employee E2
      WHERE E2.Salary > E1.Salary)
  );
END

當然我們也可以通過將最后的>改為>=,這樣我們就可以將N-1換成N了:

解法三:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  RETURN (
      SELECT MAX(Salary) FROM Employee E1
      WHERE N =
      (SELECT COUNT(DISTINCT(E2.Salary)) FROM Employee E2
      WHERE E2.Salary >= E1.Salary)
  );
END

類似題目:

Second Highest Salary

參考資料:

https://leetcode.com/discuss/88875/simple-answer-with-limit-and-offset

https://leetcode.com/discuss/63183/fastest-solution-without-using-order-declaring-variables

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

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

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

巨人網絡通訊聲明:本文標題《SQL實現LeetCode(177.第N高薪水)》,本文關鍵詞  SQL,實現,LeetCode,177.,第,高薪水,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL實現LeetCode(177.第N高薪水)》相關的同類信息!
  • 本頁收集關于SQL實現LeetCode(177.第N高薪水)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 关岭| 天峨县| 寿光市| 东台市| 禹城市| 太白县| 精河县| 汤原县| 开鲁县| 新平| 隆安县| 鹤峰县| 盖州市| 将乐县| 扎赉特旗| 阿图什市| 大埔县| 射洪县| 福泉市| 盐池县| 襄樊市| 湟源县| 仁怀市| 奉新县| 鱼台县| 逊克县| 西乡县| 永善县| 广东省| 英超| 弥渡县| 友谊县| 竹山县| 威远县| 肃北| 永善县| 垫江县| 巩留县| 禄丰县| 龙川县| 建始县|