Leetcode sql算法题

本文介绍了如何使用SQL进行数据查询,包括左连接实现表合并、获取第二高薪水及任意排名薪水的方法等高级技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要参考四火的博客:

http://www.raychase.net/2810

--175  Combine Two Tables
--左连接
select p.FirstName, p.LastName, a.City, a.State
  from Person p
  left outer join Address a
    on p.PersonId = a.PersonId;

--176 Second Highest Salary
--解法一 使用两次max找到第二大的作为过滤条件
select MAX(Salary)
  from (SELECT Salary
          from Employee
         where Salary < (select MAX(Salary) from Employee ));
--解法二 mysql主要使用desc limit( m,n) 从m开始,的n个 初始下标是0
select IFNULL((select e.Salary
                from Employee e
               group by e.Salary
               order by e.Salary desc limit 1, 1),
              NULL) SecondHighestSalary;
              
--177	Nth Highest Salary
--取到第N大的 需要定义一个function了
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M=N-1;
  RETURN (
      # Write your MySQL query statement below.
      SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT M, 1
  );
END


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值