문제풀이/SQL

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

monawa 2025. 7. 14.
728x90

문제

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

HR_EMPLOYEES            
사번, 성명, 부서 ID, 직책, 이메일, 전화번호, 입사일, 연봉
EMP_NO EMP_NAME DEPT_ID POSITION EMAIL COMP_TEL HIRE_DATE SAL
2017002 정호식 D0001 팀장 hosick_jung@grep.com 031-8000-1101 ####### 65000000
2018001 김민석 D0001 팀원 minseock_kim@grep.com 031-8000-1102 ####### 60000000
2019001 김솜이 D0002 팀장 somi_kim@grep.com 031-8000-1106 ####### 60000000
2020002 김연주 D0002 팀원 yeonjoo_kim@grep.com 031-8000-1107 ####### 53000000
2020005 양성태 D0003 팀원 sungtae_yang@grep.com 031-8000-1112 ####### 53000000


 HR_GRADE    
사번  연도  반기  평가 점수
EMP_NO YEAR HALF_YEAR SCORE
2017002 2022 1 92
2017002 2022 2 84
2018001 2022 1 89
2018001 2022 2 89
2019001 2022 1 94
2019001 2022 2 81
2020002 2022 1 90
2020002 2022 2 91
2020005 2022 1 92
2020005 2022 2 81

 

풀이

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

FROM HR_EMPLOYEES A
JOIN HR_GRADE B ON A.EMP_NO = B.EMP_NO


GROUP BY A.EMP_NO

 

GRADE와 BONUS 만 조건문으로 걸면 끗

CASE WHEN THEN END ~

728x90

댓글