欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年08月03日 15:10:01   作者:Grandyang  
這篇文章主要介紹了SQL實現LeetCode(177.第N高薪水),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

[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高薪水內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mysql數據庫之Binlog日志使用總結(必看篇)

    Mysql數據庫之Binlog日志使用總結(必看篇)

    下面小編就為大家?guī)硪黄狹ysql數據庫之Binlog日志使用總結(必看篇)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Mysql 5.7.9 shutdown 語法實例詳解

    Mysql 5.7.9 shutdown 語法實例詳解

    之前如果想關閉一個mysql數據庫可以通過kill 命令、mysqladmin shutdown 、service mysqld stop 等這樣的方式。然而在mysql-5.7.9之后mysql終于提供了SQL接口的shutdown語法啦
    2017-06-06
  • MySQL數據庫被鎖定的問題解決

    MySQL數據庫被鎖定的問題解決

    本文主要介紹了MySQL數據庫被鎖定的問題解決方法,包括通過刷新錯誤連接、修改max_connection_errors的數量、執(zhí)行flush?host或者?mysqladmin?flush-hosts等方式進行解決,感興趣的可以了解一下
    2024-10-10
  • Mysql閃退問題圖文解決辦法

    Mysql閃退問題圖文解決辦法

    之前在使用MySQL 5.5 Command Line Client時,無論輸入什么密碼,都出現閃退的情況,糾結了半天才找到原因,下面小編給大家分享我的解決方法,感興趣的朋友一起看看吧
    2016-11-11
  • MySQL命令行操作時的編碼問題詳解

    MySQL命令行操作時的編碼問題詳解

    這篇文章主要給大家介紹了關于MySQL命令行操作時的編碼問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • MySQL慢查詢分析工具pt-query-digest詳解

    MySQL慢查詢分析工具pt-query-digest詳解

    pt-query-digest是用于分析mysql慢查詢的一個工具,它可以分析binlog、General?log、slowlog,也可以通過SHOWPROCESSLIST或者通過tcpdump抓取的MySQL協議數據來進行分析,這篇文章主要介紹了MySQL慢查詢分析工具pt-query-digest詳解,需要的朋友可以參考下
    2023-01-01
  • mysql取得datetime類型的數據,后面會跟個.0的實現方法

    mysql取得datetime類型的數據,后面會跟個.0的實現方法

    下面小編就為大家?guī)硪黄猰ysql取得datetime類型的數據,后面會跟個.0的實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • MySQL5.6主從復制(mysql數據同步配置)

    MySQL5.6主從復制(mysql數據同步配置)

    這篇文章主要介紹了MySQL5.6主從復制也就是mysql數據同步配置方法,需要的朋友可以參考下
    2016-11-11
  • MySQL語句執(zhí)行順序和編寫順序實例解析

    MySQL語句執(zhí)行順序和編寫順序實例解析

    這篇文章主要介紹了MySQL語句執(zhí)行順序和編寫順序實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • MySQL8.0.11版本的新增特性介紹

    MySQL8.0.11版本的新增特性介紹

    這篇文章主要介紹了MySQL8.0.11版本的新增特性介紹,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-05-05

最新評論