2026. 5. 19. 12:40ㆍ프로그래머스 SQL
문제 설명
HR_DEPARTMENT 테이블은 회사의 부서 정보를 담은 테이블입니다. HR_DEPARTMENT 테이블의 구조는 다음과 같으며 DEPT_ID, DEPT_NAME_KR, DEPT_NAME_EN, LOCATION은 각각 부서 ID, 국문 부서명, 영문 부서명, 부서 위치를 의미합니다.

HR_EMPLOYEES 테이블은 회사의 사원 정보를 담은 테이블입니다. HR_EMPLOYEES 테이블의 구조는 다음과 같으며 EMP_NO, EMP_NAME, DEPT_ID, POSITION, EMAIL, COMP_TEL, HIRE_DATE, SAL은 각각 사번, 성명, 부서 ID, 직책, 이메일, 전화번호, 입사일, 연봉을 의미합니다.

문제
HR_DEPARTMENT와 HR_EMPLOYEES 테이블을 이용해 부서별 평균 연봉을 조회하려 합니다. 부서별로 부서 ID, 영문 부서명, 평균 연봉을 조회하는 SQL문을 작성해주세요.
평균연봉은 소수점 첫째 자리에서 반올림하고 컬럼명은 AVG_SAL로 해주세요.
결과는 부서별 평균 연봉을 기준으로 내림차순 정렬해주세요.
문제 파악
1. 부서 정보(HR_DEPARTMENT)와 사원 정보(HR_EMPLOYEES)를 DEPT_ID 기준으로 합친다. (JOIN)
2. 부서 ID와 영문 부서명을 기준으로 데이터를 그룹화 한다. (GROUP BY)
3.AVG(SAL) 로 평균을 구하고, 조건에 맞게 ROUND(..., 0) 함수 사용 (첫째 자리 반올림)
4.평균 연봉을 기준으로 내림차순 정렬
해결 과정
1. SELECT HD.DEPT_ID, HD.DEPT_NAME_EN, ROUND(AVG(HE.SAL), 0) AS AVG_SAL
- 부서 ID, 영문 부서명과 함께 계산된 평균 연봉을 선택
- AVG(HE.SAL): 그룹화된 부서원들의 연봉(SAL) 평균을 구한다.
- ROUND(..., 0): 소수점 첫째 자리에서 반올림
2.FROM HR_DEPARTMENT HD JOIN HR_EMPLOYEES HE ON HD.DEPT_ID = HE.DEPT_ID
- 부서의 영문 이름과 사원들의 연봉 정보가 분리되어 있으므로, 부서 코드 고유값인 DEPT_ID를 매핑 키로 잡아 결합
3. GROUP BY HD.DEPT_ID, HD.DEPT_NAME_EN
- AVG같은 집계 함수를 사용할 때 집계 하지 않는 일반 컬럼은 반드시 GROUP BY 절에 모두 명시
4. 평균 연봉 수치가 높은 부서 부터 위에 나오도록 내림차순 정렬
답변
SELECT
HD.DEPT_ID,
HD.DEPT_NAME_EN,
ROUND(AVG(HE.SAL), 0) AS AVG_SAL
FROM HR_DEPARTMENT HD
JOIN HR_EMPLOYEES HE ON HD.DEPT_ID = HE.DEPT_ID
GROUP BY HD.DEPT_ID, HD.DEPT_NAME_EN
ORDER BY AVG_SAL DESC;
'프로그래머스 SQL' 카테고리의 다른 글
| 15.프로그래머스 SQL Lv.4 (자동차 대여 기록 별 대여 금액 구하기) (0) | 2026.05.22 |
|---|---|
| 14.프로그래머스 SQL Lv.3 (없어진 기록 찾기) (0) | 2026.05.19 |
| 12.프로그래머스 SQL Lv.3 (즐겨찾기가 가장 많은 식당 정보 출력하기) (0) | 2026.05.19 |
| 11.프로그래머스 SQL Lv.3 (있었는데요 없었습니다) (0) | 2026.05.19 |
| 10.프로그래머스 SQL Lv.3 (업그레이드 할 수 없는 아이템 구하기) (0) | 2026.05.19 |