LeetCode 資料庫 薪水問題

2021-08-21 21:25:59 字數 1908 閱讀 3636

題目:編寫乙個 sql 查詢,獲取employee表中第二高的薪水(salary)

例如下述employee表,sql查詢應該返回200作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回null

+----+--------+

| id | salary |

+----+--------+

| 1 | 100 |

| 2 | 200 |

| 3 | 300 |

+----+--------+

期望結果如下:

+---------------------+

| secondhighestsalary |

+---------------------+

| 200 |

+---------------------+

解法:選擇出所有不重複的薪水,按照薪水降序排列後,選擇第二條資料,即為第二高的薪水

select (select distinct salary from employee

order by salary desc

limit 1 offset 1) as secondhighestsalary;

ps:limit  n offset m 表示:從第m條開始,選取n條資料(從0開始排序,所以上面選第二條資料 是 offset 1)

題目:編寫乙個 sql 查詢,獲取employee表中第 n 高的薪水(salary)

例如下述employee表,n = 2 時,應返回第二高的薪水200。如果不存在第 n 高的薪水,那麼查詢應返回null

+----+--------+

| id | salary |

+----+--------+

| 1 | 100 |

| 2 | 200 |

| 3 | 300 |

+----+--------+

期望結果如下:

+------------------------+

| getnthhighestsalary(2) |

+------------------------+

| 200 |

+------------------------+

解法:思路與上面第二高薪水相同,降序排列後,使用limit offset 選取第n高的薪水

create function getnthhighestsalary(n int) returns int

begin

declare m int;

set m = n-1;

return (

select distinct salary

from employee

order by salary desc

limit 1 offset m

);end

ps:這一題涉及mysql的自定義函式(user-defined function udf),可以先了解下再解題

建立自定義函式,簡單來說就是:

create function 函式名(形參列表) returns 返回型別  -- 注意是retruns

begin

函式體  —— 函式內定義的變數,如上面的 set m = n-1;

返回值       ——return部分

end

資料庫題目 第二高的薪水

編寫乙個 sql 查詢,獲取 employee 表中第二高的薪水 salary 例如上述 employee 表,sql查詢應該返回 200 作為第二高的薪水。如果不存在第二高的薪水,那麼查詢應返回 null。方法一 使用子查詢和 limit 子句 演算法將不同的薪資按降序排序,然後使用 limit ...

資料庫問題

資料庫問題 delphi windows sdk api 怎樣將兩個.dbf資料庫檔案,匯入到乙個表裡?在sql中有乙個叫企業管理器的東西.找到它然後找到你的目標資料庫,滑鼠右鍵有個匯入資料,裡面有個選項叫 使用一條查詢語句匯入.然後你就在這個查詢語句中寫一條sql命令,該命令同時查兩張表,但是只會...

資料庫問題!!

怎麼合併成乙個?這麼寫可以 select model,price from pcs where model in select model from products where maker b union select model,price from laptops where model in...