본문 바로가기

DB/Programmers SQL Kit

[My_SQL] Lv.4 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기

문제

 

DEPT 테이블은 굳이 쓸 필요가 없었다.

HR_GRADE의 EMP_NO을 기준으로 그룹화하고 SCORE의 평균을 이용해 CASE문으로 등급과 보너스 비율을 계산한다.

이후 해당 테이블과 EMP 테이블을 조인하여 급여의 보너스 비율을 계산한다.

 

코드

 

WITH SCORE AS (
    SELECT EMP_NO,
    CASE
        WHEN AVG(SCORE) >= 96 THEN 'S'
        WHEN AVG(SCORE) >= 90 THEN 'A'
        WHEN AVG(SCORE) >= 80 THEN 'B'
        ELSE 'C'
    END AS 'GRADE',
    CASE
        WHEN AVG(SCORE) >= 96 THEN 20
        WHEN AVG(SCORE) >= 90 THEN 15
        WHEN AVG(SCORE) >= 80 THEN 10
        ELSE 0
    END AS 'BONUS'
    FROM HR_GRADE
    GROUP BY EMP_NO
)

SELECT emp.EMP_NO, emp.EMP_NAME, s.GRADE, (emp.SAL * (s.BONUS / 100)) AS 'BONUS'
FROM HR_EMPLOYEES emp JOIN SCORE s ON emp.EMP_NO = s.EMP_NO
ORDER BY 1 ASC;