LeetCode176. 第二高及第n高的薪水
撰寫一個 SQL 查詢,獲取 Employee 表中第二高的薪水(Salary) ,

解法一:利用 limit 進行限制 此方法可適用于求第N高的薪水
imit 的用法為: select * from tableName limit i,n
tableName:表名
i:為查詢結果的索引值(默認從0開始),當i=0時可省略i
n:為查詢結果回傳的數量
i與n之間使用英文逗號","隔開
select
(select distinct Salary
from Employee
order by Salary
desc limit 1,1)
as SecondHighestSalary
心得:
1.注意去掉重復薪資
3.使用 ASC 或 DESC 關鍵字來設定查詢結果是按升序或降序排列, 默認情況下,它是按ASC升序排列,
2.注意limit的用法,索引從0 開始,降序排列后第二高索引為1
解法二:使用IFNULL() 函式
IFNULL() 函式語法格式為:IFNULL(expression, alt_value)
IFNULL() 函式用于判斷第一個運算式是否為 NULL,如果為 NULL 則回傳第二個引數的值,如果不為 NULL 則回傳第一個引數的值,
select ifnull
(
(select distinct Salary
from Employee
order by Salary
desc limit 1,1),null)
as SecondHighestSalary
心得:
1.注意ifnull是在select查詢中使用
2.若為null,回傳第二引數,非null回傳第一引數

sql自定義函式
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
SET N= N-1;
RETURN (
# Write your MySQL query statement below.
select ifnull(
(select distinct Salary
from Employee order by Salary desc
limit N,1),
null)
);
END
心得:
1.要注意N的設定不可以在return里面
2.變數宣告:DECLARE
3.CREATE FUNCTION Foo(N INT ) --傳入了一個int型別的引數N
RETURNS INT --注意這里回傳的是一個資料型別
BEGIN
DECLARE M INT
SET N = 3
RETURN (一條SQL陳述句)
END
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/62973.html
標籤:其他
