[오늘의 문제] Second Highest Salary

shlim55·2026년 1월 13일

코딩테스트

목록 보기
215/223

출처: https://leetcode.com/problems/combine-two-tables/description/

+-------------+------+
| 열 이름 | 유형 |
+-------------+------+
| ID | 정수 |
| 급여 | 내부 |
+-------------+------+
id는 이 테이블의 기본 키(고유 값을 가진 열)입니다.
이 표의 각 행에는 직원의 급여 정보가 포함되어 있습니다.

표 에서 두 번째로 높은 고유 급여를 찾는 솔루션을 작성하세요 Employee. 두 번째로 높은 급여가 없으면 .을 반환합니다 null (return None in Pandas).

결과 형식은 다음 예시와 같습니다.

예시 1:

입력:
직원 목록:
+----+--------+
| ID | 급여 |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
산출:
+---------------------+
두 번째로 높은 연봉 |
+---------------------+
| 200 |
+---------------------+
예시 2:

입력:
직원 목록:
+----+--------+
| ID | 급여 |
+----+--------+
| 1 | 100 |
+----+--------+
산출:
+---------------------+
두 번째로 높은 연봉 |
+---------------------+
| null |
+---------------------+

내가 한 풀이

SELECT MAX(salary) AS SecondHighestSalary
FROM (SELECT  salary, DENSE_RANK() OVER(ORDER BY SALARY DESC) AS `rank`
      FROM Employee
    ) a
WHERE a.rank = 2

트러블 슈팅

MAX를 넣어야 널값이 나와도 에러가 안 난다는 센스 알아두고
FROM 절 서브쿼리에선 별칭 필수

그리고 서브쿼리의 컬럼 표현 할때 a.rank 이렇게 표현

두번째 높은 연봉 출력, 널일때 null로 출력

profile
A Normal Programmer

0개의 댓글