題目:
編寫乙個 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...