题目描述
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
本题回答
方法1
先查询出最高的身高值,然后查询身高小于该值的最高身高。
# Write your MySQL query statement below
SELECT Max(Salary) AS SecondHighestSalary
FROM Employee
WHERE Salary < (SELECT Max(Salary) FROM Employee);
方法2
SELECT IFNULL((SELECT DISTINCT(Salary)
FROM Employee
ORDER BY Salary DESC
LIMIT 1,1),null) AS SecondHighestSalary
这里加个IFNULL,只是为了可读性好一点?
注:IFNULL()
方法介绍:
IFNULL(expr1,expr2)
如果 expr1 不是 NULL,IFNULL()
返回 expr1,否则它返回 expr2。IFNULL()
返回一个数字或字符串值,取决于它被使用的上下文环境。