본문 바로가기
코테 공부 🔥

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

by 서니서닝 2024. 8. 19.
728x90

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

 

문제 예시

 

원하는 결과

📌 풀이 )

* 틀린 풀이가 있으면 댓글 남겨주세요!

 

  • AVG_SCORE 계산:
    • 먼저, HR_GRADE 테이블에서 사번(EMP_NO)별로 2022년의 평균 점수(AVG_SCORE)를 계산합니다. 이 부분은 서브쿼리로 작성되어, 쿼리 내에서 'G'라는 별칭을 사용합니다.
    • GROUP BY EMP_NO를 통해 사번별로 점수를 그룹화하고, AVG(SCORE)를 사용하여 평균 점수를 계산합니다.
  • 조건에 따른 GRADE와 BONUS 계산:
    • 메인 쿼리에서는 HR_EMPLOYEES 테이블과 서브쿼리 'G'를 사번(EMP_NO)을 기준으로 조인합니다.
    • CASE 문을 사용하여 평균 점수(AVG_SCORE)에 따라 평가 등급(GRADE)과 성과금(BONUS)을 계산합니다.
      • GRADE는 점수 구간에 따라 'S', 'A', 'B', 'C'로 분류됩니다.
      • BONUS는 연봉(SAL)에 등급별 비율을 곱하여 계산됩니다.
  • 결과 정렬:
    • 결과는 사번(EMP_NO) 기준으로 오름차순 정렬됩니다.

 

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

 

 

프로그래머스

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

programmers.co.kr

 

 
 
728x90

댓글