테이블 index
HR_DEPARTMENT
Column name | Type | Nullable |
DEPT_ID | VARCHAR | FALSE |
DEPT_NAME_KR | VARCHAR | FALSE |
DEPT_NAME_EN | VARCHAR | FALSE |
LOCATION | VARCHAR | FLASE |
HR_EMPLOYEES
Column name | Type | Nullable |
EMP_NO | VARCHAR | FALSE |
EMP_NAME | VARCHAR | FALSE |
DEPT_ID | VARCHAR | FALSE |
POSITION | VARCHAR | FALSE |
EMAIL | VARCHAR | FALSE |
COMP_TEL | VARCHAR | FALSE |
HIRE_DATE | DATE | FALSE |
SAL | NUMBER | FALSE |
문제
HR_DEPARTMENT
와 HR_EMPLOYEES
테이블을 이용해 부서별 평균 연봉을 조회하려 합니다. 부서별로 부서 ID, 영문 부서명, 평균 연봉을 조회하는 SQL문을 작성해주세요.평균연봉은 소수점 첫째 자리에서 반올림하고 컬럼명은
AVG_SAL
로 해주세요.결과는 부서별 평균 연봉을 기준으로 내림차순 정렬해주세요.
예시

풀이
HR_EMPLOYEES
에서 부서명을 알아야하기 때문에 컬럼명이 같은 DEPT_ID
로 JOIN
하였다.select *
from HR_EMPLOYEES et
inner join HR_DEPARTMENT dt
on et.DEPT_ID=dt.DEPT_ID
부서의 평균 연봉을 구해야 하기 때문에
DEPT_ID
로 group by
를 하고, avg(sal)
하여 평균을 구하였다.select et.DEPT_ID ,dt.DEPT_NAME_EN, avg(sal) AVG_SAL
from HR_EMPLOYEES et
inner join HR_DEPARTMENT dt
on et.DEPT_ID=dt.DEPT_ID
group by DEPT_ID
order by AVG_SAL desc
이후 첫째 자리에서 반올림을 하고 소수점을 없애기 위해서
ROUND
함수를 사용하였다. 그 후 평균연봉으로 내림차순으로 정렬하였다.select et.DEPT_ID ,dt.DEPT_NAME_EN, ROUND(avg(sal), 0) AVG_SAL
from HR_EMPLOYEES et
inner join HR_DEPARTMENT dt
on et.DEPT_ID=dt.DEPT_ID
group by DEPT_ID
order by AVG_SAL desc
Share article