1. 程式人生 > >找第二大的數SQL-Second Highest Salary

找第二大的數SQL-Second Highest Salary

des rom tin .com begin get pre sql 最大

技術分享

1: 找小於最大的最大的

select max(Salary) from Employee where Salary<(select MAX(Salary) from Employee);

2. 排序

select  Salary from Employee where Salary not in (select MAX(Salary)from Employee) order by Salary desc limit 1;

  

select (

select distinct Salary from Employee order by Salary Desc limit 1 offset 1

) as SecondHeighestSalary;

  

找第n個數:

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
set N=N-1;
  RETURN (
     
      # Write your MySQL query statement below.
      select  Salary from Employee order by Salary desc limit 1 offset N
  );
END

  

技術分享

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
DECLARE M INT;
set N=N-1;
  RETURN (
     
      # Write your MySQL query statement below.
      select  distinct Salary from Employee order by Salary desc limit 1 offset N
  );
END

  不能在limit 裏N-1, 因為limit裏不計算

哈哈: distinct :在表中可能包含重復值,返回唯一不同的值,

找第二大的數SQL-Second Highest Salary