0%

sql查询第n高的数据

题目描述

查询第N高的数据

题解

用到了limit、offset、ifnull等关键字的知识点。

1
2
3
4
5
6
SELECT 
column_list
FROM
table1
ORDER BY column_list
LIMIT row_count OFFSET offset;

row_count表明将要返回的行数。offset表明从开头要跳过的行数。

在MySQL中可以缩写:

1
2
3
4
5
6
SELECT 
employee_id, first_name, last_name
FROM
employees
ORDER BY first_name
LIMIT 3 , 5;
1
IFNULL(expression, alt_value)

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

sql的 order by 默认为升序asc,desc是降序。

最终答案为:

1
2
3
4
5
6
7
8
9
10
11
12
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