문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/284527



입출력 예


풀이
SELECT G.SCORE, E.EMP_NO, E.EMP_NAME, E.POSITION, E.EMAIL
FROM HR_EMPLOYEES E
INNER JOIN (
SELECT EMP_NO, SCORE, RANK() OVER(ORDER BY SCORE DESC) AS RNK
FROM (SELECT EMP_NO, SUM(SCORE) AS SCORE
FROM HR_GRADE
WHERE YEAR = '2022'
GROUP BY EMP_NO
) AS S
) G ON E.EMP_NO = G.EMP_NO
WHERE RNK = 1;
후기
먼저 상하반기 점수를 직원 별로 합을 구하고 순위를 구해서 1등인 직원만 가져오면 된다.
문제에서는 직원들을 구하라고 해서 서브쿼리를 한번 더 사용했지만 만약 한명만 구하는거라면 복잡하게 작성할 필요없이 LIMIT 1로 간단하게 가져오면 된다.
'코딩테스트 (프로그래머스) > SQL' 카테고리의 다른 글
| [프로그래머스][MySQL][Lv. 4] 특정 세대의 대장균 찾기 (0) | 2026.01.01 |
|---|---|
| [프로그래머스][MySQL][Lv. 3] 대장균의 크기에 따라 분류하기 2 (0) | 2025.12.31 |
| [프로그래머스][MySQL][Lv. 1] 특정 옵션이 포함된 자동차 리스트 구하기 (0) | 2023.05.21 |
| [프로그래머스][MySQL][Lv. 3] 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.05.21 |
| [프로그래머스][MySQL][Lv. 2] 자동차 평균 대여 기간 구하기 (0) | 2023.05.21 |