



*문제해설
HR_GRADE 테이블에서 사원별로 상,하반기 점수를 평균내어 AVG_SCORE를 구한 뒤, 이를 CTE로 저장하고, HR_EMPLOYEES 테이블과 조인하여 사원 이름과 연봉을 함께 가져왔다.
이후 CASE WHEN을 이용해 평균 점수에 따라 평가 등급을 ‘S’, ‘A’, ‘B’, ‘C’로 분류하고, 연봉의 비율을 곱해 성과금을 계산했다.
WITH AVG_SCORE AS (
SELECT EMP_NO, AVG(SCORE) AS AVG_SCORE
FROM HR_GRADE
GROUP BY EMP_NO
)
SELECT
E.EMP_NO,
E.EMP_NAME,
CASE
WHEN A.AVG_SCORE >= 96 THEN 'S'
WHEN A.AVG_SCORE >= 90 THEN 'A'
WHEN A.AVG_SCORE >= 80 THEN 'B'
ELSE 'C'
END AS GRADE,
CASE
WHEN A.AVG_SCORE >= 96 THEN ROUND(E.SAL * 0.2)
WHEN A.AVG_SCORE >= 90 THEN ROUND(E.SAL * 0.15)
WHEN A.AVG_SCORE >= 80 THEN ROUND(E.SAL * 0.1)
ELSE 0
END AS BONUS
FROM HR_EMPLOYEES E
JOIN AVG_SCORE A ON E.EMP_NO = A.EMP_NO
ORDER BY E.EMP_NO;'💻 프로그래밍 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 - 없어진 기록 찾기 (0) | 2025.04.21 |
|---|---|
| 프로그래머스 - 조건에 맞는 도서와 저자 리스트 출력하기 (3) | 2025.04.21 |
| 프로그래머스 - 부서별 평균 연봉 조회하기 (1) | 2025.04.18 |
| 프로그래머스 - 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 (0) | 2025.04.18 |
| 프로그래머스 - 물고기 종류 별 잡은 수 구하기 (0) | 2025.04.18 |