176. 第二高的薪水

编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。

+----+--------+
| Id | Salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。

+---------------------+
| SecondHighestSalary |
+---------------------+
| 200                 |
+---------------------+

这道题目很有意思,取得不是max,而是第二个max。

  • 第一次提交
select Salary as SecondHighestSalary from Employee 
group by Salary desc
order by Salary desc
limit  1,1

看起来没有问题,但是如果limit 不存在,那么会返回一个空结构而不是null。

  • 第二次提交
select ifnull(null,Salary ) as SecondHighestSalary from Employee 
group by Salary desc
order by Salary desc
limit  1,1
  • 第三次提交
select ifnull(Salary,null ) as SecondHighestSalary from Employee 
group by Salary desc
order by Salary desc
limit  1,1
  • 第四次提交
    二、三次提交陷入了一个误区,直到select 1,Salary。我发现根本就没有输出,知道看了评论有一个大佬的代码。
select ifnull (
    (select distinct Salary
    from Employee
    order by Salary desc
    limit 1,1),
    null
)as 'SecondHighestSalary'

ifnull(x,y),若x不为空则返回x,否则返回y
limit x,y 从第x条取y条
distinct,过滤关键字

比我写的好多了,真不愧是大佬。

结论

select limit 没有就为空
临时表用法。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/second-highest-salary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • LeetCode数据库题目 题目 编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary)...
    Shenjiming阅读 233评论 0 1
  • 第二高的薪水 题目 编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。 例如上述...
    饮酒醉回忆阅读 254评论 0 0
  • 题目描述 编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。 分析 max函数可...
    莫小鹏阅读 321评论 0 0
  • 社团课上,老师领我们做了书签,需要的材料有:双面胶,彩纸,水彩笔,剪刀。首先把正方形的彩纸折成三角形,再把三角形下...
    暧樂阅读 368评论 0 0
  • 第十五讲 梦有三种解释 点此听语音(第十五讲) 梦有三种解释。第一种叫梦相解释;第二种叫意象解释;第三种叫潜意识的...
    梦释人生阅读 1,237评论 0 0

友情链接更多精彩内容