zoukankan      html  css  js  c++  java
  • 176. Second Highest Salary【取表中第二高的值】,sql,limit,offset

    Write a SQL query to get the second highest salary from the Employee table.

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

    For example, given the above Employee table, the query should return 200 as the second highest salary. If there is no second highest salary, then the query should return null.

    +---------------------+
    | SecondHighestSalary |
    +---------------------+
    | 200                 |
    +---------------------+

    题意分析:
    取表中第二高的值,先进行排序,然后取第二个值即可,我们需要使用LIMIT 和 OFFSET
    首先我们先了解下LIMIT 和 OFFSET

    比如下面的sql语句:

    ① selete * from testtable limit 2,1;

    ② selete * from testtable limit 2 offset 1;

    注意:

    1.数据库数据计算是从0开始的

    2.offset X是跳过X个数据,limit Y是选取Y个数据

    3.limit  X,Y  中X表示跳过X个数据,读取Y个数据

    这两个都是能完成需要,但是他们之间是有区别的:

    ①是从数据库中第三条开始查询,取一条数据,即第三条数据读取,一二条跳过

    ②是从数据库中的第二条数据开始查询两条数据,即第二条和第三条。

    SELECT DISTINCT Salary  FROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET 1

    这样做是取表中第二个数字为空时,即表中只有一个数字,或者全部数字都是一样的并列第一,无法返回空值

    SELECT   (SELECT DISTINCT Salary  FROM Employee ORDER BY Salary DESC LIMIT 1 OFFSET 1) AS secondHighestSalary
    不积跬步无以至千里,千里之堤毁于蚁穴。 你是点滴积累成就你,你的丝丝懒惰毁掉你。 与诸君共勉
  • 相关阅读:
    Java多线程缓存器简单实现
    synchronized Lock用法
    【项目】01CMS的CRUD
    RabbitMQ模式,RabbitMQ和springboot整合,RabbitMQ全链路消息不丢失解决
    FreeMarker在项目中实际运用随感
    自定义异常springMVC&springCloud
    单例设计模式懒汉式和恶汉式
    浅析重不重写hashcode和equals对于HashSet添加元素的影响
    JAVA异常处理原理浅析
    Static(静态)关键字入门
  • 原文地址:https://www.cnblogs.com/haoHaoStudyShare/p/7441315.html
Copyright © 2011-2022 走看看