[DataLemur] Second Highest Salary

다람·2026년 4월 10일

DataLemur

목록 보기
8/8
post-thumbnail

1. 문제 이해

이 문제는 전체 직원 중에서 두 번째로 높은 급여를 구하는 문제이다.

주의할 점은 다음과 같다.

  • 동일 급여가 있는 경우 하나만 출력

2. 접근 방법

처음에 내가 접근했던 방법은 다음과 같다.

SELECT MAX(salary) as second_highest_salary
FROM employee
WHERE salary != (
                SELECT MAX(salary)
                FROM employee
                );

이렇게 문제를 풀었던 이유는

  • 전체에서 가장 높은 급여를 구한 다음
  • 가장 높은 급여를 제외한 것들 중에서 가장 큰 급여를 찾기 위함 이였다.

수정할 점

제출했을 경우 틀린 답은 아니라고 나오지만
이 방식대로 접근하게 된다면 약간의 수정할 부분이 있다고 생각했다.

1. 비교 연산자

WHERE salary != (
                SELECT MAX(salary)
                FROM employee
                );

원래 작성했던 쿼리문도 틀린 쿼리문은 아니지만 !=을 사용하는 것 보다 <를 사용하는 방법이 의미를 더 명확하게 보여주는 것 같다.

WHERE salary < (
                SELECT MAX(salary)
                FROM employee
                );

2. DISTINCT

SELECT MAX(salary) as second_highest_salary

문제의 조건에서 동일한 급여가 여러 개있으면 하나만 출력하라고 명시되어 있다.
물론 MAX() 함수를 사용하기 때문에 1개만 나오기 때문에 문제는 없지만 의미를 더 명확하게 하려면 DISTINCT를 같이 사용해주는 것이 좋은 것 같다.

SELECT MAX(DISTINCT salary) as second_highest_salary

3. 최종 쿼리

SELECT MAX(DISTINCT salary) as second_highest_salary
FROM employee
WHERE salary < (
                SELECT MAX(salary)
                FROM employee
                );

profile
개발하는 다람쥐

0개의 댓글