176 - 第二高的薪水 - SQL
程序员文章站
2022-07-07 09:50:39
...
SQL架构:编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
+---------------------+
| SecondHighestSalary |
+---------------------+
| 200 |
+---------------------+
题目要求执行SQL语句返回第二高的薪水,如果不存在则返回NULL。那么题意可以分为两层进行处理,第一层是得到可能的第二高的薪水,第二层是判断结果是否存在来返回相应的结果。
- 找到第二高的薪水:为了找到第二高的薪水有两种思路:
- 使用
max()
找除去原始表中最大的Salary后最大的值 - 将Salary降序排列后取第二个值,这里可使用
LIMIT
解决
- 使用
- 判断是否存在:这里要用到SQL中的流程函数
IFNULL(value1, value2)
,使用可见SQL中的常用函数
LIMIT 参数:第一个参数表述从哪里开始查,第二个参数表示一共查几条。例如
SELECT * FROM TEST LIMIT 0,3;
表示从位置0开始共查3条
可查阅:SQL Limit子句
SELECT IFNULL ((
SELECT max(Salary)
FROM Employee
WHERE Salary < (SELECT max(Salary)
FROM Employee)), NULL) SecondHighestSalary
SELECT IFNULL ((
SELECT DISTINCT Salary
FROM Employee
ORDER BY Salary DESC
LIMIT 1 OFFSET 1), NULL) SecondHighestSalary
推荐阅读
-
sql server数据库高可用日志传送的方法
-
MySQL在大数据、高并发场景下的SQL语句优化和"最佳实践"
-
数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
-
大数据量高并发的数据库优化,sql查询优化
-
男生薪水最高的十大专业 建筑行业上榜,第二就业前景不错
-
数据库SQL实战:查找员工编号emp_now为10001其自入职以来的薪水salary涨幅值growth(教程)
-
俄罗斯人的“第二面包”,营养竟然比苹果高10倍!
-
数据库SQL实战之查找所有员工入职时候的薪水情况(题解)
-
数据库SQL实战:获取所有部门中当前员工薪水最高的相关信息(教程)
-
学什么专业工资高?为你推荐薪水最高的十大专业