[SQL 문제 풀기] 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기(284528)

lhs's avatar
Feb 11, 2025
[SQL 문제 풀기] 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기(284528)
 

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

LHS's Study Space