[LeetCode] 176. Second Highest Salary

JOY·2022년 7월 5일
0

Oracle

SELECT (
    SELECT Salary 
    FROM (
        SELECT DISTINCT Salary, DENSE_RANK() OVER(ORDER BY Salary DESC) rank 
        FROM Employee
        ) T
    WHERE T.rank = 2
    ) "SecondHighestSalary"
FROM DUAL
  • DENSE_RANK : 중복 순위가 존재해도 순차적으로 순위 증가
  • RANK : 중복 순위 갯수만큼 순위 증가
  • OVER : 서브쿼리 없이 집계함수 보조 가능

*Oracle은 공백을 null값으로 처리하기 때문에 null을 출력하기 위해 dual 테이블 사용

MySQL

SELECT 
     IFNULL (NULL,
         (SELECT DISTINCT Salary
         FROM Employee
         ORDER BY Salary DESC
         LIMIT 1 OFFSET 1))  AS SecondHighestSalary
  • LIMIT : 출력할 행의 수
  • OFFSET : 몇번째 행부터 출력할 것인지 (0부터 카운트)
  • IFNULL : 표현식이 null값이면 alt_value 출력
IFNULL(expression, alt_value)

0개의 댓글