美文网首页鲸落消零派
刷题笔记(Mysql)

刷题笔记(Mysql)

作者: 众神开挂 | 来源:发表于2020-04-23 21:35 被阅读0次

    175. 组合两个表

    表1: Person
    +-------------+---------+
    | 列名 | 类型 |
    +-------------+---------+
    | PersonId | int |
    | FirstName | varchar |
    | LastName | varchar |
    +-------------+---------+

    表2: Address
    +--------------+---------+
    | 列名 | 类型 |
    +--------------+---------+
    | AddressId | int |
    | PersonId | int |
    | City | varchar |
    | State | varchar |
    +-------------+---------+

    编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State

    select A.FirstName, A.LastName, B.City, B.State
    from Person A
    left join (select distinct PersonId, City, State from Address) B
    on A.PersonId=B.PersonId;
    

    176. 第二高的薪水

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

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

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

    177. 第N高的薪水

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

    +----+--------+
    | Id | Salary |
    +----+--------+
    | 1 | 100 |
    | 2 | 200 |
    | 3 | 300 |
    +----+--------+
    例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。

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

    CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
    BEGIN
      DECLARE c INT default if(N>0,N-1,1);
      RETURN (
          # Write your MySQL query statement below.
          select Salary from Employee group by Salary order by Salary desc limit c,1
      );
    END
    

    相关文章

      网友评论

        本文标题:刷题笔记(Mysql)

        本文链接:https://www.haomeiwen.com/subject/mbkoshtx.html