LeetCode176. 第二高及第n高的薪水

   日期:2020-09-16     浏览:97    评论:0    
核心提示:LeetCode176. 第二高的薪水编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。解法一:利用 limit 进行限制 此方法可适用于求第N高的薪水imit 的用法为: select * from tableName limit i,ntableName:表名i:为查询结果的索引值(默认从0开始),当i=0时可省略in:为查询结果返回的数量i与n之间使用英文逗号","隔开select(select distinct Salary from Empl

LeetCode176. 第二高及第n高的薪水

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

解法一:利用 limit 进行限制 此方法可适用于求第N高的薪水

imit 的用法为: select * from tableName limit i,n
tableName:表名
i:为查询结果的索引值(默认从0开始),当i=0时可省略i
n:为查询结果返回的数量
i与n之间使用英文逗号","隔开

select
(select distinct Salary 
from Employee 
order by Salary 
desc limit 1,1) 
as SecondHighestSalary

心得:
1.注意去掉重复薪资
3.使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按ASC升序排列。
2.注意limit的用法,索引从0 开始,降序排列后第二高索引为1

解法二:使用IFNULL() 函数

IFNULL() 函数语法格式为:IFNULL(expression, alt_value)
IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

select ifnull
(
	(select distinct Salary 
	from Employee 
	order by Salary 
	desc limit 1,1),null) 
as SecondHighestSalary

心得:
1.注意ifnull是在select查询中使用
2.若为null,返回第二参数,非null返回第一参数

sql自定义函数

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
    SET N= N-1;
    RETURN (
      # Write your MySQL query statement below.
      select ifnull(
          (select distinct Salary 
          from Employee order by Salary desc 
          limit N,1),
          null)
  );
END

心得:
1.要注意N的设置不可以在return里面
2.变量声明:DECLARE
3.CREATE FUNCTION Foo(N INT ) --传入了一个int类型的参数N
RETURNS INT --注意这里返回的是一个数据类型
BEGIN
DECLARE M INT
SET N = 3
RETURN (一条SQL语句)
END

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服