【发布时间】:2018-11-21 06:50:44
【问题描述】:
在给定的问题中,
编写一个 SQL 查询,从 Employee 表中获取第二高的薪水。
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如,给定上面的 Employee 表,查询应该返回 200 作为第二高的薪水。 如果没有第二高的薪水,则查询应返回 null。
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
我为这个问题写了一个代码,但是,预期的输出是不同的。
我的代码:
SELECT
CASE
WHEN COUNT(*) = 1 THEN NULL
ELSE (SELECT Salary FROM Employee HAVING Salary < MAX(Salary) ORDER BY Salary DESC LIMIT 1)
END AS SecondHighestSalary
FROM Employee;
我认为我的代码有问题,但我在这里找不到真正的问题。我的代码返回 100 而不是 200。我做错了什么?
+---------------------+
| SecondHighestSalary |
+---------------------+
| 100 |
+---------------------+
【问题讨论】:
-
您可以获得第n次最高访问记录stackoverflow.com/a/26732513/2893413