두번째로 높은 급여를 반환하자. 없으면 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 |
댓글