좋은 지적 감사합니다! 아래는 문제 설명 + 예시 데이터 + 기대 출력 결과까지 모두 포함한 원문 전체 내용입니다:
문제 설명
HR_DEPARTMENT 테이블은 회사의 부서 정보를 담은 테이블입니다.
HR_DEPARTMENT 테이블의 구조는 다음과 같으며 DEPT_ID, DEPT_NAME_KR, DEPT_NAME_EN, LOCATION은 각각 부서 ID, 국문 부서명, 영문 부서명, 부서 위치를 의미합니다.
| Column name | Type | Nullable |
|---|
| DEPT_ID | VARCHAR | FALSE |
| DEPT_NAME_KR | VARCHAR | FALSE |
| DEPT_NAME_EN | VARCHAR | FALSE |
| LOCATION | VARCHAR | FALSE |
HR_EMPLOYEES 테이블은 회사의 사원 정보를 담은 테이블입니다.
HR_EMPLOYEES 테이블의 구조는 다음과 같으며 EMP_NO, EMP_NAME, DEPT_ID, POSITION, EMAIL, COMP_TEL, HIRE_DATE, SAL은 각각 사번, 성명, 부서 ID, 직책, 이메일, 전화번호, 입사일, 연봉을 의미합니다.
| 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_DEPARTMENT 테이블
| DEPT_ID | DEPT_NAME_KR | DEPT_NAME_EN | LOCATION |
|---|
| D0005 | 재무팀 | Finance | 그렙타워 5층 |
| D0006 | 구매팀 | Purchasing | 그렙타워 5층 |
| D0007 | 마케팅팀 | Marketing | 그렙타워 6층 |
HR_EMPLOYEES 테이블
출력 예시
| DEPT_ID | DEPT_NAME_EN | AVG_SAL |
|---|
| D0007 | Marketing | 54666667 |
| D0006 | Purchasing | 54250000 |
| D0005 | Finance | 52000000 |
SELECT
d.DEPT_ID AS DEPT_ID,
d.DEPT_NAME_EN AS DEPT_NAME_EN,
ROUND(AVG(SAL), 0) AS AVG_SAL
FROM hr_department d
JOIN hr_employees e ON d.DEPT_ID = e.DEPT_ID
GROUP BY d.DEPT_ID, d.DEPT_NAME_EN
ORDER BY AVG(SAL) DESC;
SELECT
e.DEPT_ID AS DEPT_ID,
d.DEPT_NAME_EN AS DEPT_NAME_EN,
e.AVG_SAL AS AVG_SAL
FROM hr_department d JOIN (
SELECT
dept_id,
ROUND(AVG(SAL), 0) AS AVG_SAL
FROM hr_employees
GROUP BY dept_id
) e ON d.dept_id = e.dept_id
ORDER BY e.avg_sal DESC;