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;
728x90
'코테 공부 🔥' 카테고리의 다른 글
[프로그래머스/SQL] 잔챙이 잡은 수 구하기 (0) | 2024.08.19 |
---|---|
[프로그래머스/SQL] 물고기 종류 별 대어 찾기 (0) | 2024.08.19 |
[프로그래머스/SQL] 특정 세대의 대장균 찾기 (0) | 2024.08.19 |
[프로그래머스/SQL] 부서별 평균 연봉 조회하기 (1) | 2024.05.28 |
[백준/파이썬] 1436: 영화감독 숌 (1) | 2024.05.28 |
댓글