1. 문제
2. 문제 풀기 전에,
- HR_DEPARTMENT 👉🏻 부서 ID, 영문 부서명 조회
- HR_EMPLOYEES 👉🏻 평균 연봉 조회
- 평균 연봉은 소수점 첫째 자리에서 반올림하기
- 부서별 평균 연봉 DESC
3. 테이블
HR_DEPARTMENT AS DEPT
HR_EMPLOYEES AS EMP
4. 풀이 과정
1단계) 두 테이블을 연결하여 부서별 평균 연봉을 알아보아야 하니 부서 ID를 기준으로 INNER JOIN을 적용해 줍니다.
SELECT
FROM HR_DEPARTMENT AS DEPT
INNER JOIN HR_EMPLOYEES AS EMP ON DEPT.DEPT_ID = EMP.DEPT_ID
2단계) 부서 ID, 영문 부서명, 평균 연봉을 조회하는 SELECT문을 작성해 준다.
AVG() 함수를 사용하여 연봉의 평균값을 계산하고, ROUND() 함수를 통해 소수 첫째 자리에서 반올림을 해 준다.
SELECT DEPT.DEPT_ID,
DEPT.DEPT_NAME_EN,
ROUND(AVG(EMP.SAL), 0) AS AVG_SAL
FROM HR_DEPARTMENT AS DEPT
INNER JOIN HR_EMPLOYEES AS EMP ON DEPT.DEPT_ID = EMP.DEPT_ID
3단계) 조회할 값을 부서별로 나타내야 하니 그룹화를 해준다.
SELECT DEPT.DEPT_ID,
DEPT.DEPT_NAME_EN,
ROUND(AVG(EMP.SAL), 0) AS AVG_SAL
FROM HR_DEPARTMENT AS DEPT
INNER JOIN HR_EMPLOYEES AS EMP ON DEPT.DEPT_ID = EMP.DEPT_ID
GROUP BY DEPT.DEPT_ID
4단계) 평균 연봉을 기준으로 내림차순 정렬을 해준다.
SELECT DEPT.DEPT_ID,
DEPT.DEPT_NAME_EN,
ROUND(AVG(EMP.SAL), 0) AS AVG_SAL
FROM HR_DEPARTMENT AS DEPT
INNER JOIN HR_EMPLOYEES AS EMP ON DEPT.DEPT_ID = EMP.DEPT_ID
GROUP BY DEPT.DEPT_ID
ORDER BY AVG_SAL DESC;
5. 완성 코드
SELECT DEPT.DEPT_ID,
DEPT.DEPT_NAME_EN,
ROUND(AVG(EMP.SAL), 0) AS AVG_SAL
FROM HR_DEPARTMENT AS DEPT
INNER JOIN HR_EMPLOYEES AS EMP ON DEPT.DEPT_ID = EMP.DEPT_ID
GROUP BY DEPT.DEPT_ID
ORDER BY AVG_SAL DESC;
🔗 관련 링크
프로그래머스 문제 - https://school.programmers.co.kr/learn/courses/30/lessons/284529
728x90
'Skills > SQL' 카테고리의 다른 글
프로그래머스: 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기 - 시도 및 해결 과정 (MySQL) (0) | 2024.03.13 |
---|---|
프로그래머스: 업그레이드 할 수 없는 아이템 구하기 (MySQL) (0) | 2024.03.13 |
프로그래머스: 노선별 평균 역 사이 거리 조회하기 (MySQL) (1) | 2024.03.12 |
프로그래머스: 연도별 평균 미세먼지 농도 조회하기 (MySQL) (1) | 2024.03.12 |
프로그래머스: 조건에 맞는 사원 정보 조회하기 (MySQL) (0) | 2024.03.09 |