LeetCode-mysql题:176.第二高的薪水
题目
编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。
+—-+——–+
| Id | Salary |
+—-+——–+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+—-+——–+
例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。
+———————+
| SecondHighestSalary |
+———————+
| 200 |
+———————+
通过次数113,925提交次数324,021
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/second-highest-salary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
我们一看到这个题,就会想到,要想求第二高,不存在第二高还返回为null。这用编程思想明显是要用if语句啦。所以要想做这个题,首先需要知道ifnull函数,我们上网搜一下ifnull函数的用法:
原文链接:https://www.yiibai.com/mysql/ifnull.html
IFNULL函数用法
MySQL IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数。 否则,IFNULL函数返回第二个参数。
两个参数可以是文字值或表达式。
以下说明了IFNULL函数的语法:
1 | IFNULL(expression_1,expression_2); |
如果expression_1不为NULL,则IFNULL函数返回expression_1; 否则返回expression_2的结果。
IFNULL函数根据使用的上下文返回字符串或数字。
如果要返回基于TRUE或FALSE条件的值,而不是NULL,则应使用IF函数。
distinct:去重
distinct:去重一样的Salary。
limit: LIMIT子句来限制SELECT语句返回记录的行数。
limit:限时返回的个数
offset:跳过几个
limit 1 offset 1:返回一个结果,跳过一个
例如返回第三高就是:limit 1 offset 2
答案解析
1 | # Write your MySQL query statement below |
已完成
执行用时:71 ms
输入
{“headers”: {“Employee”: [“Id”, “Salary”]}, “rows”: {“Employee”: [[1, 100], [2, 200], [3, 300], [4, 150]]}}
输出
{“headers”: [“SecondHighestSalary”], “values”: [[200]]}
差别
预期结果
{“headers”: [“SecondHighestSalary”], “values”: [[200]]}