[LeetCode 데이터베이스] - N번 높은 월급(177)

8283 단어 MySQLleetcodemysql
문서 목록
  • 1. 제목
  • 2. 해답
  • 셋째, 참조
  • 이 제목은 [LeetCode 데이터베이스] - 두 번째로 높은 봉급(176)을 받은 버전으로 두 사람이 사용한 데이터 테이블과 그 중의 기록은 모두 같다.
    제목
    SQL 조회를 작성하여 Employee표에서 두 번째로 높은 급여를 받습니다Salary.
    +----+--------+
    | Id | Salary |
    +----+--------+
    | 1  | 100    |
    | 2  | 200    |
    | 3  | 300    |
    +----+--------+
    

    예를 들어 상술한 Employee표, N = 2시에는 두 번째로 높은 급여200로 돌아가야 한다.만약 N 높은 임금이 존재하지 않는다면 조회는 되돌아와야 한다NULL.
    +------------------------+
    | getNthHighest(2) |
    +------------------------+
    | 200                    |
    +------------------------+
    

    출처: 리코더 링크:https://leetcode-cn.com/problems/nth-highest-salary/
    2. 해답
    mysql> delimiter $$
    mysql> create function getNthHighest(n int(11)) returns int(11)
        -> begin
        ->     declare nthHighest int(11);
        ->     set n = n - 1;
        ->     set nthHighest = (select Salary from Employee group by Salary order by Salary desc limit n, 1);
        ->     return nthHighest;
        -> end
        -> $$
    Query OK, 0 rows affected (0.01 sec)
    mysql> delimiter ;
    
    mysql> select getNthHighest(2);
    +------------------+
    | getNthHighest(2) |
    +------------------+
    |              200 |
    +------------------+
    3 rows in set (0.00 sec)
    
    mysql> select getNthHighest(5);
    +------------------+
    | getNthHighest(5) |
    +------------------+
    |             NULL |
    +------------------+
    3 rows in set (0.00 sec)
    

    3. 참고
  • [1] MySQL Stored Procedure & MySQL Functions Guide
  • 좋은 웹페이지 즐겨찾기