Skills/SQL
프로그래머스: 부서별 평균 연봉 조회하기 (MySQL)
듀공🥕
2024. 3. 13. 14:57
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