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

: ) YOUNG·2025년 7월 7일
1

알고리즘

목록 보기
478/483

연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기

https://school.programmers.co.kr/learn/courses/30/lessons/284528

  • HR_GRADE 테이블에서 점수가 분기별로 나타나 있어 같은 EMP_NO가 2번씩 나오기 때문에 AVG()를 사용해야 하고, GROUP_BY를 통해 중복을 제거한다.




WITH GRADE 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  
    FROM
        HR_GRADE
    GROUP BY
        EMP_NO
),
BONUS_INFO AS (
    SELECT
        G.EMP_NO,
        G.GRADE,
        E.EMP_NAME,
        CASE
            WHEN G.GRADE = 'S' THEN E.SAL * 0.2
            WHEN G.GRADE = 'A' THEN E.SAL * 0.15
            WHEN G.GRADE = 'B' THEN E.SAL * 0.1
            ELSE 0
        END AS BONUS
    FROM
        GRADE G
    JOIN
        HR_EMPLOYEES E ON G.EMP_NO = E.EMP_NO
)


SELECT
    EMP_NO,
    EMP_NAME,
    GRADE,
    BONUS
FROM 
    BONUS_INFO
ORDER BY
    EMP_NO


    

0개의 댓글