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

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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值