Welcome! Everything is fine.

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

프로그래머스/SQL

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

개발곰발 2024. 4. 30.
728x90

📌 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

📌정답

처음에는 까다로워 보이는 문제였지만 차근차근 작성하면 어렵지 않은 문제였다. 먼저 EMP_NO을 기준으로 HR_EMPLOYEES 테이블과 HR_GRADE 테이블을 JOIN하고, HR_GRADE 테이블의 EMP_NO을 기준으로 GROUP BY 하였다. SCORE의 평균으로 구하려면 SCORE 컬럼을 가지고 있어야하기 때문이다. 그리고나서 CASE문을 이용해 GRADE와 BONUS를 작성했다. SCORE의 평균을 내서 평가 등급과 성과금을 결정하도록 했다.

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