• 数据库算法175. 组合两个表 176. 第二高的薪水 177. 第N高的薪水


    前言

    最近发现leetcode还有mysql的题目,于是尝试做了几道

    175. 组合两个表

    176.](https://img-blog.csdnimg.cn/e066ec5386f942aba6677a8cdcfae964.png)
    编写一个SQL查询来报告 Person 表中每个人的姓、名、城市和州。如果 personId 的地址不在 Address 表中,则报告为空 null 。

    以 任意顺序 返回结果表。

    查询结果格式如下所示。
    在这里插入图片描述
    首先组合表,可以想到使用连接,于是使用了inner join,但运行时发现还有一种null的情况,于是改用左外连接,这样就会填充null

    select p.firstName,p.lastName,a.city,a.state 
    from Person p right join Address a 
    on p.personId=a.personId;
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    176. 第二高的薪水

    . 在这里插入图片描述
    编写一个 SQL 查询,获取并返回 Employee 表中第二高的薪水 。如果不存在第二高的薪水,查询应该返回 null 。

    查询结果如下例所示。
    在这里插入图片描述
    在这里插入图片描述
    这里思路开始是取排序的第二个

    select ifnull((select salary from Employee order by Employee.salary desc limit 1,1),null)  as SecondHighestSalary;
    
    • 1

    但发现有重复,那么就去重

    select ifnull((select distinct salary from Employee order by Employee.salary desc limit 1,1),null)  as SecondHighestSalary;
    
    • 1

    这样可以了
    于是也可以使用

    select max(Salary) SecondHighestSalary 
    from Employee
    where Salary < (select max(Salary) from Employee)
    
    • 1
    • 2
    • 3

    177. 第N高的薪水

    在这里插入图片描述
    编写一个SQL查询来报告 Employee 表中第 n 高的工资。如果没有第 n 个最高工资,查询应该报告为 null 。

    查询结果格式如下所示。
    在这里插入图片描述
    在这里插入图片描述
    思路和上个题一样

    select distinct salary from Employee order by Employee.salary desc limit n-1,1
    
    • 1

    但发现这个是function,那么n-1是不行的
    于是set n = n-1

    CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
    BEGIN
        SET N=N-1;
      RETURN (
          # Write your MySQL query statement below.
          select distinct salary from Employee order by Employee.salary desc limit n,1
      );
    END
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

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

  • 相关阅读:
    释放DOE的能量,快速确定最佳工艺设置,节省时间、成本和资源
    高性能云主机来啦!详解ZStack vNUMA功能
    【Spring Boot】响应JSON实现原理
    计算机毕业设计springboot+vue基本微信小程序的智慧社区防疫服务系统
    娄底医药工业洁净厂建设基本要点概述
    临时码农敲门砖 有效期 2022-09-24 (详情 见文末)
    uniapp:录音权限检查,录音功能
    pwndbg安装(gdb插件)
    百度文心一言 4.0 :如何申请百度文心一言 4.0
    109 使用Ajax传递请求本地数据库
  • 原文地址:https://blog.csdn.net/qq_39167720/article/details/125559111