less than 1 minute read

📜문제


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

image

📜정답


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

📜노트


image
을 기반으로 기준 점수, 평가 등급, 성과금(연봉 기준)을 조회할 수 있다.
SCORE는 상.하반기로 나누어져 있기때문에 AVG함수를 통해 평균으로 나타낸다.

  • CASE WHEN
    CASE WHEN 조건1 THEN '반환값'
       WHEN 조건2 THEN '반환값'
       .
       .
       ELSE '반환값'
    END
    

    조건문이며 IF문과 달리 조건을 여러개 걸 수 있다는 차이가 있다.