728x90
반응형
문제
https://leetcode.com/problems/second-highest-salary/


문제 접근 방식
생각보다 간단한 방식이다.
1) MAX() 활용 2) LIMIT, OFFSET 활용 총 2가지 방법이 있다.
1) MAX() 활용
- where 조건절을 활용하여 최대값 (첫번째로 높은 salary)보다 작은 값들만 가져옴
- 그 중에서 최대값 (MAX) 조회
select MAX(salary) as 'SecondHighestSalary'
from Employee
where salary < (select MAX(salary) from Employee)
;
2) LIMIT, OFFSET 활용
- salary를 내림차순으로 정렬 후 2번째 값을 1개만 가져옴 (limit, offset)
- LIMIT : 설정한 갯수만큼의 값을 가져옴
- OFFSET : 가져올 데이터의 위치 값 (0 : 첫 행 데이터)
select (
select distinct salary
from Employee
order by salary desc
limit 1 offset 1
) as 'SecondHighestSalary';
여기서 주의해야 할 사항,
스칼라 서브쿼리를 활용하지 않으면, 두번째로 높은 salary가 없을 때 NULL값을 반환하지 않는다.
✅ 스칼라 서브쿼리 : 하나의 값(스칼라)을 반환하는 서브쿼리
- 항상 하나의 행 (1 row)의 결과값을 반환하며, 값이 없으면 NULL이 반환된다.
- select 절에 컬럼처럼 값 넣을 때 활용
✅ 테이블 서브쿼리 : 여러 개의 행 또는 열을 반환하는 일반 서브쿼리
- 서브쿼리가 테이블처럼 여러 행을 반환하며, 값이 없으면 아예 0행을 반환한다.
- 리스트, 여러 조건 비교할 때 활용
728x90
반응형
'코딩 테스트 > MySQL' 카테고리의 다른 글
| [HackerRank] Weather Observation Station 19 (0) | 2025.08.20 |
|---|---|
| [HackerRank] Interviews (2) | 2025.08.18 |
| [HackerRank] Weather Observation Station 18 (2) | 2025.08.14 |
| [HackerRank] Occupations (3) | 2025.08.12 |
| [HackerRank] Symmetric Pairs (2) | 2025.08.11 |