문제 링크입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/284528
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문제
HR_DEPARTMENT, HR_EMPLOYEES, HR_GRADE 테이블을 이용해 사원별 성과금 정보를 조회하려합니다. 평가 점수별 등급과 등급에 따른 성과금 정보가 아래와 같을 때, 사번, 성명, 평가 등급, 성과금을 조회하는 SQL문을 작성해주세요.
평가등급의 컬럼명은 GRADE로, 성과금의 컬럼명은 BONUS로 해주세요.
결과는 사번 기준으로 오름차순 정렬해주세요.
풀이1 - WITH 절 사용
WITH EMP_GRADE AS (
SELECT EMP_NO,
CASE
WHEN AVG(SCORE) >= 96 THEN 'S'
WHEN AVG(SCORE) >= 90 THEN 'A'
WHEN AVG(SCORE) >= 80 THEN 'B'
ELSE 'C'
END AS 'GRADE',
CASE
WHEN AVG(SCORE) >= 96 THEN 0.2
WHEN AVG(SCORE) >= 90 THEN 0.15
WHEN AVG(SCORE) >= 80 THEN 0.1
ELSE 0
END AS 'BONUS_PER'
FROM HR_GRADE
GROUP BY EMP_NO
)
SELECT E.EMP_NO,
E.EMP_NAME,
G.GRADE,
(E.SAL * G.BONUS_PER) AS 'BONUS'
FROM HR_EMPLOYEES AS E
INNER JOIN EMP_GRADE AS G ON G.EMP_NO = E.EMP_NO
ORDER BY E.EMP_NO
1. 상, 하반기 평균점수를 구하는 WITH 절 생성
2. CASE WHEN 구문으로 상, 하반기 평균 점수에 따라 평가등급과 성과금 비율 부여
3. (2)의 WITH 절과 평가자 테이블을 JOIN하여 정보 조회
이를 통해 각 직원의 평가 등급과 보너스가 포함된 최종 결과를 얻을 수 있습니다.
'Skills > SQL' 카테고리의 다른 글
[SQL] 등급 매기기 함수 : NTILE (0) | 2024.04.25 |
---|---|
[SQL] 순위 함수 : RANK, DENSE_RANK, ROW_NUMBER (0) | 2024.04.24 |
[프로그래머스] SQL - '대장균의 크기에 따라 분류하기 2' 문제풀이 (0) | 2024.04.22 |
[프로그래머스] SQL - '특정 조건을 만족하는 물고기별 수와 최대 길이 구하기' 문제풀이 (0) | 2024.04.20 |
[프로그래머스] SQL - '업그레이드 할 수 없는 아이템 구하기' 문제풀이 (0) | 2024.04.19 |