-
프로그래머스 - 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기취업 준비/알고리즘 2025. 2. 22. 17:20
문제 설명
HR_DEPARTMENT 테이블은 회사의 부서 정보를 담은 테이블입니다. HR_DEPARTMENT 테이블의 구조는 다음과 같으며 DEPT_ID, DEPT_NAME_KR, DEPT_NAME_EN, LOCATION은 각각 부서 ID, 국문 부서명, 영문 부서명, 부서 위치를 의미합니다.
Column nameTypeNullableDEPT_ID VARCHAR FALSE DEPT_NAME_KR VARCHAR FALSE DEPT_NAME_EN VARCHAR FALSE LOCATION VARCHAR FLASE HR_EMPLOYEES 테이블은 회사의 사원 정보를 담은 테이블입니다. HR_EMPLOYEES 테이블의 구조는 다음과 같으며 EMP_NO, EMP_NAME, DEPT_ID, POSITION, EMAIL, COMP_TEL, HIRE_DATE, SAL은 각각 사번, 성명, 부서 ID, 직책, 이메일, 전화번호, 입사일, 연봉을 의미합니다.
Column nameTypeNullableEMP_NO VARCHAR FALSE EMP_NAME VARCHAR FALSE DEPT_ID VARCHAR FALSE POSITION VARCHAR FALSE EMAIL VARCHAR FALSE COMP_TEL VARCHAR FALSE HIRE_DATE DATE FALSE SAL NUMBER FALSE HR_GRADE 테이블은 2022년 사원의 평가 정보를 담은 테이블입니다. HR_GRADE의 구조는 다음과 같으며 EMP_NO, YEAR, HALF_YEAR, SCORE는 각각 사번, 연도, 반기, 평가 점수를 의미합니다.
Column nameTypeNullableEMP_NO VARCHAR FALSE YEAR NUMBER FALSE HALF_YEAR NUMBER FALSE SCORE NUMBER FALSE
문제HR_DEPARTMENT, HR_EMPLOYEES, HR_GRADE 테이블을 이용해 사원별 성과금 정보를 조회하려합니다. 평가 점수별 등급과 등급에 따른 성과금 정보가 아래와 같을 때, 사번, 성명, 평가 등급, 성과금을 조회하는 SQL문을 작성해주세요.
평가등급의 컬럼명은 GRADE로, 성과금의 컬럼명은 BONUS로 해주세요.
기준 점수평가 등급성과금(연봉 기준)
결과는 사번 기준으로 오름차순 정렬해주세요.96 이상 S 20% 90 이상 A 15% 80 이상 B 10% 이외 C 0%
예시HR_DEPARTMENT 테이블이 다음과 같고
DEPT_IDDEPT_NAME_KRDEPT_NAME_ENLOCATIOND0001 법무팀 Law Dep 그렙타워 4층 D0002 인사팀 Human resources 그렙타워 4층 D0003 총무팀 General Affairs 그렙타워 4층 HR_EMPLOYEES 테이블이 다음과 같고
EMP_NOEMP_NAMEDEPT_IDPOSITIONEMAILCOMP_TELHIRE_DATESAL2017002 정호식 D0001 팀장 hosick_jung@grep.com 031-8000-1101 2017-03-01 65000000 2018001 김민석 D0001 팀원 minseock_kim@grep.com 031-8000-1102 2018-03-01 60000000 2019001 김솜이 D0002 팀장 somi_kim@grep.com 031-8000-1106 2019-03-01 60000000 2020002 김연주 D0002 팀원 yeonjoo_kim@grep.com 031-8000-1107 2020-03-01 53000000 2020005 양성태 D0003 팀원 sungtae_yang@grep.com 031-8000-1112 2020-03-01 53000000 HR_GRADE 테이블이 다음과 같을 때
EMP_NOYEARHALF_YEARSCORE2017002 2022 1 92 2018001 2022 1 89 2019001 2022 1 94 2020002 2022 1 90 2020005 2022 1 92 2017002 2022 2 84 2018001 2022 2 89 2019001 2022 2 81 2020002 2022 2 91 2020005 2022 2 81 다음과 같이 사원별 성과금 정보를 출력해야 합니다.
EMP_NOEMP_NAMEGRADEBONUS2017002 정호식 B 6500000 2018001 김민석 B 6000000 2019001 김솜이 B 6000000 2020002 김연주 A 7950000 2020005 양성태 B 5300000 SELECT E.EMP_NO, E.EMP_NAME,G.GRADE AS "GRADE", CASE WHEN G.GRADE = "S" THEN E.SAL * 0.2 WHEN G.GRADE = "A" THEN E.SAL * 0.15 WHEN G.GRADE = "B" THEN E.SAL * 0.1 ELSE 0 END AS "BONUS" FROM HR_EMPLOYEES AS E JOIN(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" FROM HR_GRADE GROUP BY EMP_NO) AS G ON E.EMP_NO = G.EMP_NO ORDER BY 1'취업 준비 > 알고리즘' 카테고리의 다른 글
프로그래머스 - 물고기 종류 별 잡은 수 구하기 (0) 2025.02.23 프로그래머스 - 멸종위기의 대장균 찾기 (0) 2025.02.22 백준 - 1600, 말이 되고픈 원숭이 (1) 2025.02.18 백준 - 2961, 도영이가 만든 맛있는 음식 (2) 2025.02.14 백준 - 17952, 과제는 끝나지 않아!(Java) (3) 2025.02.13