SQL——查找第N高的数据
程序员文章站
2024-03-23 21:10:58
...
查找第N高的数据
插在第N高的数据,在学生成绩查询,薪水查询中经常用到,下面结合一道力扣上的题来总结一下该类题型应该如何求解
第二高薪水
题目来源:176. 第二高的薪水
解决思路:
第一步:我们可以先考虑对薪水进行排序select distinc Salary from Employee order by Salary desc;
第二步:选取第二的薪水select distinct Salary from Employee order by Salary desc limit 1,1;
第三步:处理特殊情况:如果不存在第二高薪水的情况
select ifnull(
(select distinct Salary
from Employee
order by Salary desc
limit 1,1
),null
) as SecondHighestSalary;
总结:
主要考察以下几个知识点:
1、如何去重,distinct的使用select distinct Salary from Employee
2、limit和offset
- limit n 字句表示查询结果返回前n条数据
- offset n 表示跳过x条数据 limit y offset
- x表示结果跳过x条数据,读取前y条数据
举例:
语句1:select * from student limit 9,4
语句2:slect * from student limit 4 offset 9
语句1和2均返回表student的第10、11、12、13行 。
语句2中的4表示返回4行,9表示从表的第十行开始
3、判断空值函数(ifnull)如何使用
fi(a,b)函数,如何value1 不是空,则返回a
如果value1是空,结果返回b
返回第N高的薪水
题目来源:力扣177. 第N高的薪水
编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。
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
上一篇: Java异常处理机制
下一篇: Java基础思维导图
推荐阅读
-
SQL——查找第N高的数据
-
数据库查询-编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary)
-
关于sql数据库维护失败的问题查找方法_MySQL
-
sql server 2012 数据库所有表里查找某字符串的方法
-
sqlserver2008查找某数据库中的列是否存在某个值 博客分类: sqlserver SQL Server
-
mysql实现每组取前N条记录的sql,以及后续的组数据量限制
-
一条SQL语句,选择从第M条到第N条数据
-
数据库SQL实战:查找所有员工的last_name和first_name以及对应的dept_name(教程)
-
关于sql数据库维护失败的问题查找方法_MySQL
-
分页-PHP正则截取问题,截取第N-N+1个#号之间的数据