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