One minute
DBLeetcode176
Leetcode 176.第二高的薪水
题目:
编写一个 SQL 查询,获取Employee
表中第二高的薪水(Salary)
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
思路:
首先查出所有员工的薪水,去重。然后按薪水降序排序,用limit选取第二高的薪水。
嵌套查询,首先从表中查出最高的薪水,然后查询比全表最高薪水低的最高薪水,就是第二高的薪水。
SQL查询语句中的 limit 与 offset 的区别:
limit y 分句表示: 读取 y 条数据
limit x, y 分句表示: 跳过 x 条数据,读取 y 条数据
limit y offset x 分句表示: 跳过 x 条数据,读取 y 条数据
//思路1:
Select distinct Salary AS 'SecondHighestSalary'
from Employee order by Salary DESC limit 1,1;
//思路2:
Select max(Salary) as SecondHighestSalary
from Employee where Salary <(
Select max(Salary) from Employee
);
Read other posts