본문 바로가기

코딩테스트/SQL - 프로그래머스

SQL 고득점 kit(GROUP BY) - 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기

프로그래머스 문제

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

 

풀이

https://school.programmers.co.kr/questions/72887

 

 

 

 

-- 풀이 쿼리
SELECT S.EMP_NO
     , E.EMP_NAME
     , CASE WHEN S.SCORE >= 96 THEN 'S'
            WHEN S.SCORE >= 90 THEN 'A'
            WHEN S.SCORE >= 80 THEN 'B'
            ELSE 'C'
            END AS GRADE
     , CASE WHEN S.SCORE >= 96 THEN E.SAL*0.2
            WHEN S.SCORE >= 90 THEN E.SAL*0.15
            WHEN S.SCORE >= 80 THEN E.SAL*0.1
            ELSE 0
            END AS BONUS
    FROM (
        SELECT EMP_NO
             , AVG(SCORE) AS SCORE
            FROM HR_GRADE
            GROUP BY EMP_NO
         ) AS S
    LEFT JOIN HR_EMPLOYEES E
        ON S.EMP_NO = E.EMP_NO

 

썩 좋은 문제는 아닌 것 같다. 문제에선 상반기, 하반기로 나뉘어 있는데 관련해서 문제에 아무런 언급이나 조건이 없어서 오해의 소지가 다분한 문제다. 상/하반기의 평균으로 하니 풀렸다.

 

그 외에 딱히 어렵거나 까다로운 함수를 써야 한다거나... 하는 부분은 없었다.