zoukankan      html  css  js  c++  java
  • 【lc-database】176. 第二高的薪水

    1.176. 第二高的薪水

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

    ±—±-------+

    | Id | Salary |

    ±—±-------+

    | 1 | 100 |

    | 2 | 200 |

    | 3 | 300 |

    ±—±-------+

    例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。

    ±--------------------+

    | SecondHighestSalary |

    ±--------------------+

    | 200 |

    ±--------------------+

    两种答案:

    1.IFNULL

    SELECT
        IFNULL(
          (SELECT DISTINCT Salary
           FROM Employee
           ORDER BY Salary DESC
            LIMIT 1 OFFSET 1),
        NULL) AS SecondHighestSalary
    

    OFFSET指定SELECT语句开始查询的数据偏移量。相当于每页显示几条数据。

    select * from employee limit 1 offset 2;
    

    IFNULL(expr1,expr2) : expr1是一个表达式,当expr1为null时 直接使用expr2的值。

    select IFNULL((select id from employee where id = 4),null)  as data;
    

    通过内层循环来判断是否有数据,来决定是否要进行IFNULL函数判断 如果没有数据的话 直接返回Null。

    SELECT
        (SELECT DISTINCT
                Salary
            FROM
                Employee
            ORDER BY Salary DESC
            LIMIT 1 OFFSET 1) AS SecondHighestSalary
    

    通过内查询 查找出第二高的薪水。

  • 相关阅读:
    并发编程 进程
    计算机的发展史和操作系统简介
    subprocess和struct模块
    socket编程
    面向对象进阶 反射
    类的内置方法
    常用模块(hashlib,configparser,logging)

    面向对象封装 classmethod和staticmethod方法
    面向对象 继承补充和多态
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860764.html
Copyright © 2011-2022 走看看