💻 프로그래밍/프로그래머스

프로그래머스 - 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기

ssoniya 2025. 4. 18. 20:46

 

 

*문제해설

 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;