leetcode_176_第二高的薪水[distinct、order by(desc)、limit、ifnull]

leetcode 176 第二高的薪水

  • 题目
    编写一个SQL查询,获取'Employee'表中第二高的薪水。
    +----+--------+
    | Id | Salary |
    +----+--------+
    | 1  | 100    |
    | 2  | 200    |
    | 3  | 300    |
    +----+--------+
    例如上述'Employee'表,SQL查询应该返回'200'作为第二高的薪水。
    如果不存在第二高的薪水,那么查询应返回'null'+---------------------+
    | SecondHighestSalary |
    +---------------------+
    | 200                 |
    +---------------------+
    
  • select ifnull(
        (
            select distinct Salary 
            from Employee 
            order by Salary desc
            limit 1,1
        ), 
        null
    ) as SecondHighestSalary;
    
    1. distinct 列出不同的值,用于返回唯一不同的值
      select distinct 列名 from 表名;
      
    2. order by 用于根据指定的列对结果集进行排序
      select * from 表名 order by 列名;
      
      默认排序升序,如果需要降序可加关键字DESC
      select * from 表名 order by 列名 desc;
      
    3. limit 指定返回某行或某几行
      select * from 表名 limit 5;
      
      limit 5 指示mysql返回不多于5行,从第一行(行0)开始,给出为指定的要检索的最大行数,如果没有足够的行,只返回能返回的几行。
      如果需要返回下一个3行,需执行
      select * from 表名 limit 5,3;
      
      也可使用替代语法
      select * from 表名 limit 3 offset 5;
      
    4. ifnull 判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
      select ifnull(表达式,表达式为null时要返回的值);
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章