1. 문제 풀이 아이디어
WITH
절을 사용하여 사원별 점수 평균과 급여를 계산한 후,CASE
문으로 등급과 보너스를 부여하여 문제를 해결할 수 있다.
2. 나의 정답 코드
WITH a AS (
SELECT
e.emp_no,
e.emp_name,
SUM(g.score) / 2 score,
e.sal
FROM
hr_department d
JOIN hr_employees e ON d.dept_id = e.dept_id
JOIN hr_grade g ON e.emp_no = g.emp_no
GROUP BY
e.emp_no,
e.emp_name,
e.sal
)
SELECT
emp_no,
emp_name,
CASE
WHEN score >= 96 THEN 'S'
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
ELSE 'C'
END grade,
CASE
WHEN score >= 96 THEN sal * 0.2
WHEN score >= 90 THEN sal * 0.15
WHEN score >= 80 THEN sal * 0.1
ELSE 0
END bonus
FROM
a
ORDER BY
emp_no;
3. 정리
WITH
절에서 직원별 평균 점수를 계산한다.
JOIN
을 사용하여 부서, 직원, 성적 테이블을 연결한다.
GROUP BY
를 사용하여 직원별로 그룹화하고,SUM(score) / 2
로 평균 점수를 구한다.
CASE
문을 활용하여 점수에 따라 등급(GRADE
)을 부여한다.
CASE
문을 활용하여 등급에 따라 보너스(BONUS
)를 계산한다.
ORDER BY emp_no
를 사용하여 직원 번호 기준으로 정렬한다.
Share article