美文网首页
Leetcode_SQL-简单-176-第二高的薪水

Leetcode_SQL-简单-176-第二高的薪水

作者: Gaafung峰 | 来源:发表于2020-03-18 22:52 被阅读0次

问题

编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。

Id Salary
1 100
2 200
3 300

例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。

SecondHighestSalary
200

准备

create database leecote176;
use leecote176;


create table Employee(
Id int(10),
Salary int(10));


insert into Employee values
(1,100),
(2,200),
(3,300);

解答

# 解法一:排除最大值后进行搜索第二大值
select max(Salary) as SecondHighestSalary
from Employee
where Salary < (
    select max(Salary) from Employee
);
# 解法二:利用Limit限制 offset偏移,排除只有1个值情况结合IFNULL
    - 解释:先倒序排序去重,限制显示第二条,如果第二条是空,则返回空置(即不存在)
SELECT
    IFNULL(
      (SELECT DISTINCT Salary
       FROM Employee
       ORDER BY Salary DESC
        LIMIT 1 OFFSET 1),
    NULL) AS SecondHighestSalary;

相关文章

网友评论

      本文标题:Leetcode_SQL-简单-176-第二高的薪水

      本文链接:https://www.haomeiwen.com/subject/qduhyhtx.html