-- 실습문제
-- 1. employees테이블에서 각 사원의 부서별 부서 번호(department_id)와 평균 급여(salary)를 조회하세요.
-- 단, 부서번호가 null이면 0으로 변경하여 조회세요.
-- 2. employees테이블에서 부서별 부서 번호(department_id)와 부서별 총 사원 수를 조회하세요.
-- 단, 부서번호가 null이면 0으로 변경하여 조회세요.
-- 3. employees테이블에서 부서의 급여 평균이 8000을 초과하는 부서의 부서번호와 급여 평균을 조회하세요.
-- 4. employees테이블에서 급여 평균이 8000을 초과하는 각 직무(job_id)에 대하여
-- 직무 이름(job_id)이 SA로 시작하는 사원은 제외하고 직무 이름과 급여 평균을
-- 급여 평균이 높은 순서로 정렬하여 조회하세요.
===================================
-- 실습문제 답안
-- 1. employees테이블에서 각 사원의 부서별 부서 번호(department_id)와 평균 급여(salary)를 조회하세요.
-- 단, 부서번호가 null이면 0으로 변경하여 조회세요.
SELECT
NVL(department_id, 0) AS dep_id
, ROUND(AVG(salary), 2) AS avg_salary
FROM employees
GROUP BY department_id
ORDER BY dep_id
;
-- 2. employees테이블에서 부서별 부서 번호(department_id)와 부서별 총 사원 수를 조회하세요.
-- 단, 부서번호가 null이면 0으로 변경하여 조회세요.
SELECT
NVL(department_id, 0) AS dep_id
, COUNT(employee_id) AS total_count
FROM employees
GROUP BY department_id
ORDER BY dep_id
;
-- 3. employees테이블에서 부서의 급여 평균이 8000을 초과하는 부서의 부서번호와 급여 평균을 조회하세요.
SELECT
department_id,
ROUND(AVG(salary), 2) AS avg_sal
FROM employees
GROUP BY department_id
HAVING AVG(salary) > 8000
ORDER BY department_id
;
-- 4. employees테이블에서 급여 평균이 8000을 초과하는 각 직무(job_id)에 대하여
-- 직무 이름(job_id)이 SA로 시작하는 사원은 제외하고 직무 이름과 직무별 급여 평균을
-- 급여 평균이 높은 순서로 정렬하여 조회하세요.
SELECT
job_id
, ROUND(AVG(salary), 2) AS avg_sal
FROM employees
WHERE job_id NOT LIKE 'SA%'
GROUP BY job_id
HAVING AVG(salary) > 8000
ORDER BY avg_sal DESC
;
'데이터베이스' 카테고리의 다른 글
데이터베이스_SQL기본(JOIN)_예제_ 22.06.24(day05) (0) | 2022.06.24 |
---|---|
데이터베이스_SQL기본(JOIN)_교안_ 22.06.24(day05) (0) | 2022.06.24 |
데이터베이스_SQL기본(ORDER BY)_예제_ 22.06.23(day04) (0) | 2022.06.23 |
데이터베이스_SQL기본(HAVING)_예제_ 22.06.23(day04) (0) | 2022.06.23 |
데이터베이스_SQL기본(GROUP BY)_예제_ 22.06.23(day04) (0) | 2022.06.23 |