leetcode中的SQL题(三)

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

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

例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。

+------------------------+
| getNthHighestSalary(2) |
+------------------------+
| 200                    |
+------------------------+

题目分析:
第n高 需要创建一个函数,要求如果存在返回,不存在返回null 需要使用IF()

答案:

create funtion getNthHighestSalary(N int) returns int
begin 
set N=N;
return (
select (IF((select count(*) from (select distinct e.Salary from employee e) 
 e) >= N, select min(e.Salary) from (select distinct e.Salary from order by e.Salary desc limit N) e) , NULL))
);
end
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一. Java基础部分.................................................
    wy_sure阅读 3,846评论 0 11
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,848评论 0 10
  • SQL语言基础 本章,我们将会重点探讨SQL语言基础,学习用SQL进行数据库的基本数据查询操作。另外请注意本章的S...
    厲铆兄阅读 5,369评论 2 46
  • #日记# 2018年4月18日 星期三 ️ 一 早上来到蜂场,满天飞的蜜蜂,比平时多出了好多,这是因为到了一个新的...
    刘元元阅读 177评论 0 0
  • 最近我发现,我容易丢东西了。丢的并不是自己每天都会用的东西,而是储存了一段时间,对自己比较有意义,但是很可能一年半...
    LilyZheng阅读 195评论 1 1