mysql |那些关于第二大的事

经常遇到关于第二大的计算,如找到销售量第二大的id等等这类问题。

一下是我的学习总结,有些来自网络,出处会给出详细的链接,方便寻找源码。


题目 :第二高的薪水

来源https://leetcode.com/problems/second-highest-salary/description/

方案一

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

保证了Salary只有唯一的输出,避免多个第二高的情况。

方案二

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

解决了为空的问题,为空就输出NULL

方案三:

SELECT MAX(Salary) AS SecondHighestSalary
     FROM Employee 
         WHERE Salary < (SELECT MAX(Salary) FROM Employee)

参考http://blog.csdn.net/u010479690/article/details/25053937

为了方便自己日后参看,将http://blog.csdn.net/u010479690/article/details/25053937中的内容转过来。

拓展

mysql

表中的第二大id号

SELECT MAX(vcid) FROM msdtb1701 
     WHERE vcid < (SELECT MAX(vcid) FROM msdtb1701)

SELECT  MAX(vcid) FROM msdtb1701 
     WHERE vcid NOT IN (SELECT MAX(vcid) FROM msdtb1701)

表中的第二大id号及其user

SELECT vcuser ,vcid FROM msdtb1701 
     WHERE vcid=
            (SELECT MAX(vcid) FROM msdtb1701 WHERE vcid    
                 NOT IN (SELECT MAX(vcid) FROM msdtb1701))

表中第三大id号

SELECT MAX(vcid) FROM  msdtb1701 
     WHERE vcid < (SELECT  MAX(vcid) FROM msdtb1701 WHERE vcid 
              NOT IN (SELECT MAX(vcid) FROM msdtb1701))

表中前三大的id号及其user

SELECT vcid,vcuser FROM msdtb1701  ORDER BY vcid DESC LIMIT 3

注意:依照此数值调整限制输出行数

第N大的薪水

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
SET M=N-1;
  RETURN (
      # Write your MySQL query statement below.
      SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT M, 1
  );
END

Sql Server

表中第N大数值

select TOP N * from tablename where

ORACLE

表中第N大的数值

SELECT * FROM TABLE1 WHERE ROWNUM<=N

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

347110
来自专栏跟着阿笨一起玩NET

SQL Server 2008中的Pivot和UnPivot

今天给新成员讲解PIVOT 和 UNPIVOT示例,顺便整理了一下其用法。这是自SQL Server 2005起提供的新功能。

12320
来自专栏小古哥的博客园

常用SQL语句集合

一、数据定义 1、创建新数据库:CREATE DATABASE database_name 2、创建新表:CREATE TABLE table_name (c...

34760
来自专栏乐沙弥的世界

SQL基础--> 数据处理(DML、RETURNING、MERGE INTO)

--=================================================

10020
来自专栏数据处理

hive sql练习

70520
来自专栏用户画像

工资管理系统 sql server数据库设计

12240
来自专栏跟着阿笨一起玩NET

(3)合并列值与分拆列值

在SQL中分拆列值和合并列值老生常谈了,从网上搜刮了一下并记录下来,以便不时之需 :)

9110
来自专栏乐沙弥的世界

SQL基础--> 约束(CONSTRAINT)

约束是表、列级的强制规定、是防止那些无效或有问题的数据输入到表中。当对该表进行DML

10920
来自专栏沃趣科技

innodb存储引擎锁的实现

通常,我们在95%以上的MySQL使用场景中,从一定程度上来讲,就是在使用InnoDB存储引擎,很多时候我们选择使用InnoDB存储引擎的原因,就是因为它支持高...

16250
来自专栏杨建荣的学习笔记

使用copy命令解决LONG类型的困扰(r2第24天)

在oracle的数据类型中,long类型算是一个比较另类的典型,早就不建议使用了,但是在数据字典里还是能看到long 类型的影子。 如果在一些工作中碰到long...

37060

扫码关注云+社区

领取腾讯云代金券