LeetCode 177 第N高的薪水

2021-10-08 18:36:48 字數 1402 閱讀 1513

題目:

編寫乙個 sql 查詢,獲取 employee 表中第 n 高的薪水(salary);例如 employee 表,n = 2 時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 null。

表: employee

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

| id | salary |

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

| 1 | 100 |

| 2 | 200 |

| 3 | 300 |

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

返回如下結果

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

| getnthhighestsalary(2) |

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

| 200 |

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

新增表結構和資料
drop table if exists `employee`;

create table `employee` (

`id` int(11) not null,

`salary` int(11) null default null,

primary key (`id`) using btree

) engine = innodb character set = utf8 collate = utf8_general_ci row_format = compact;

insert into `employee` values (1, 100);

insert into `employee` values (2, 200);

insert into `employee` values (3, 300);

思路:
# limit 返回資料的行數. limit 1,2:從第一行資料開始,取兩行的資料
解答:

直接執行下面語句,函式新增成功。

delimiter //

create function getnthhighestsalary(n int) returns int

begin

set n = n - 1;

return (

select ifnull((select distinct salary from employee order by salary desc limit n,1 ),null)

);end

執行函式,檢驗是否正確

select getnthhighestsalary(2)

Leetcode 177 第N高的薪水

詳細見 leetcode 題目總結 sql 編寫乙個 sql 查詢,獲取 employee 表中第 n 高的薪水 salary id salary 1 100 2 200 3 300 例如上述 employee 表,n 2時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 n...

177 第N高的薪水

第n高的薪水 編寫乙個 sql 查詢,獲取 employee 表中第 n 高的薪水 salary id salary 1 100 2 200 3 300 例如上述 employee 表,n 2 時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 null。getnthhigh...

177 第N高的薪水

編寫乙個 sql 查詢,獲取 employee 表中第 n 高的薪水 salary id salary 1 100 2 200 3 300 例如上述 employee 表,n 2 時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 null。getnthhighestsala...