题目描述
编写一个 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()返回一个数字或字符串值,取决于它被使用的上下文环境。
SQL查询第二高薪水
本文提供两种SQL查询方法,用于从Employee表中获取第二高的薪水。第一种方法通过子查询找出最高薪水,再查找次高的薪水;第二种方法使用DISTINCT和LIMIT结合ORDER BY实现相同目的。若不存在第二高薪水,则返回null。
416

被折叠的 条评论
为什么被折叠?



