1. 程式人生 > >LeetCode #177第N高的薪水

LeetCode #177第N高的薪水

看起來好像是上一道題的延伸,感覺迴圈一波好像也能幹,但是仔細一想,萬一表的元組很多呢?

換個思路:先對錶進行降序排序,然後查詢前N個元組,最後從結果中再查詢最後一個元組就是答案了。

limit 函式

  • 一個引數時代表查詢數量
  • 兩個引數時,第一個引數代表檢索偏移量(從0開始),第二個引數代表查詢數量
#查詢按學號排序後學生表中的前四項資料(即第1-4行)
select * from Student order by SNO limit 4;
#查詢按學號排序後學生表中的從第四項到最後一項的資料中的前兩項(即排序表中的第4、5兩行)
select * from Student order by SNO limit 4,2;

做法修改為:降序排序,查詢第N行一直到最後一行,查詢第一行。

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
  declare m int;
  set m = N - 1;
  RETURN (
      # Write your MySQL query statement below.
      select Salary from Employee group by Salary order by Salary desc limit m,1
  );
END