본문 바로가기
알고리즘

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

by writing turtle 2024. 11. 28.

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

 

문제가 좀 불친절 하다고 느꼈다. 기준 점수는 있는데 기준 점수를 어떻게 구하는지를 안 알려줌. 눈치껏 평균을 내서 풀긴 했는데 처음에는 기준이 가장 높은 점수, 가장 낮은 점수, 평균 중 무엇인지 알려주지 않아 예시를 살펴보는 수 밖에 없었다. 

문제 자체는 어렵지는 않았다. 문제에서 세 개의 테이블이 주어지지만, 부서정보 테이블은 이 문제에서는 사용하지 않는다.

간단한 조인과 GROUP BY를 해주면 된다.

SELECT A.EMP_NO, EMP_NAME,  
    CASE WHEN SCORE >= 96 THEN 'S'
        WHEN SCORE >=90 THEN 'A'
        WHEN SCORE >= 80 THEN 'B'
        ELSE 'C'
    END AS GRADE,
    CASE WHEN SCORE >= 96 THEN SAL * 0.2
        WHEN SCORE >=90 THEN SAL * 0.15
        WHEN SCORE >= 80 THEN SAL * 0.1
        ELSE 0
    END AS BONUS
FROM HR_EMPLOYEES A, (SELECT EMP_NO, AVG(SCORE) AS SCORE FROM HR_GRADE GROUP BY EMP_NO) AS B
WHERE A.EMP_NO = B.EMP_NO
ORDER BY EMP_NO