「力扣数据库」176. 第二高的薪水(第二天)

176. 第二高的薪水

    • 题目
    • 解题
      • 步骤
      • 代码

题目

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

Id Salary
1 100
2 200
3 300

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

SecondHighestSalary
200

解题

步骤

  1. 首先将Salary中的数据去重,使用到 DISTINCT :
    SELECT DISTINCT Salary FROM Employee
  2. 再将Salary中的数据按降序排列:
    SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC
  3. 按照分页的思想是一页一条数据,使用到 LIMIT, 第二高的薪水则在第二页:
    SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1, 1
  4. 考虑极端情况:没有第二薪水,则为空!使用 IFNULL 判断:
    SELECT IFNULL( (SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1, 1),null) AS SecondHighestSalary

代码

SELECT IFNULL((SELECT DISTINCT Salary From Employee
                        ORDER BY Salary DESC
                        LIMIT 1,1),NULL) AS SecondHighestSalary 

「力扣数据库」181. 超过经理收入的员工(第三天)

你可能感兴趣的:(#,LeetCode,数据库)