본문 바로가기
연습장/SQL

[프로그래머스] Lv.3 부서별 평균 연봉 조회하기 (MySQL)

by Ruas 2024. 8. 8.
728x90

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제
HR_DEPARTMENT와 HR_EMPLOYEES 테이블을 이용해 부서별 평균 연봉을 조회하려 합니다. 부서별로 부서 ID, 영문 부서명, 평균 연봉을 조회하는 SQL문을 작성해주세요.
평균연봉은 소수점 첫째 자리에서 반올림하고 컬럼명은 AVG_SAL로 해주세요.결과는 부서별 평균 연봉을 기준으로 내림차순 정렬해주세요.

 

1.  평균 연봉 소수점 첫째 자리 반올림

 

소수점 반올림을 하기 위해서는 ROUND() 함수를 사용하면 된다.

 

 

MySQL :: MySQL 8.4 Reference Manual :: 14.6.2 Mathematical Functions

MySQL 8.4 Reference Manual  /  ...  /  Functions and Operators  /  Numeric Functions and Operators  /  Mathematical Functions 14.6.2 Mathematical Functions Table 14.10 Mathematical Functions Name Description ABS() Return the absolute value ACOS(

dev.mysql.com

 

이 문제에서는 평균 연봉에 대한 소수점 반올림이기 때문에 AVG() 함수와 함께 사용한다.

 

 

MySQL :: MySQL 8.4 Reference Manual :: 14.19.1 Aggregate Function Descriptions

MySQL 8.4 Reference Manual  /  ...  /  Functions and Operators  /  Aggregate Functions  /  Aggregate Function Descriptions 14.19.1 Aggregate Function Descriptions This section describes aggregate functions that operate on sets of values. They are

dev.mysql.com

 

ROUND() 함수는 ROUND(DATA, X) 형식으로 사용하며,

DATA는 변환하고자 하는 값, X는 표현하는 소수점 자리 수라고 생각하면 된다.

 

소수점 2째 자리에서 반올림하는 경우 ROUND(DATA, 1)이 되는 것인데,

해당 문제에서는 첫 째 자리에서 반올림을 하라고 했기 때문에, ROUND(DATA)의 형식으로 사용해도 무관하다.

 

SELECT ROUND(AVS(SAL), 0) AS AVG_SAL

 

2. 전체 코드

SELECT DEPT.DEPT_ID, DEPT_NAME_EN, ROUND(AVS(SAL), 0) AS AVG_SAL
FROM HR_DEPARTMENT AS DEPT JOIN HR_EMPLOYEES AS EMP
ON DEPT.DEPT_ID = EMP.DEPT_ID
GROUP BY DEPT_ID
ORDER BY AVG_SAL DESC
728x90

댓글