본문 바로가기
learning/SQL

[LeetCode 176] Second Highest Salary

by 유자유자 2023. 1. 29.

두번째로 높은 급여를 반환하자. 없으면 null을 반환한다. 

 

다음 구문에 대해 알아보자

ifnull : 조건 값이 있을 때는 그 값을, 없을 때는 지정 값을 반환한다. ifnull(조건, null 일 때의 값) 으로 나타낸다. 

offset : limit과 같이 쓰이며, 몇번째부터 샐 지 나타낸다. 5번째 행 부터 3개를 나타내고 싶으면 LIMIT 3 OFFSET 5 으로 나타낼 수 있다. 

 

위 문제는 간단하게 최댓값을 필터링한 후 가장 높은 값을 뽑을 수 있다. 속도도 제일 빠르다. 

SELECT MAX(Salary) AS SecondHighestSalary 
FROM Employee
WHERE Salary not in (SELECT MAX(Salary) FROM Employee);

 ifnull 조건을 걸 수도 있다.

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

'learning > SQL' 카테고리의 다른 글

[LeetCode 1158] Market Analysis I  (1) 2023.01.29
[LeetCode 1393] Capital Gain/Loss  (0) 2023.01.29
[LeetCode 1667] Fix Names in a Table  (0) 2023.01.28
[LeetCode 1527] Patients With a Condition  (0) 2023.01.28
[LeetCode 608] Tree Node  (0) 2023.01.28

댓글