본문 바로가기
데이터베이스

22일차//[Oracle] 과제 3- (GROUP BY)

by aesup 2021. 2. 10.
728x90
--GROUP문제

--문제1) EMPLOYEES 테이블에서 모든 SALESMAN(SA_MAN)에 대하여 급여의
--평균, 최고액, 최저액, 합계를 구하여 출력하여라.

SELECT avg(salary), max(salary), min(salary), sum(salary)
FROM employees
WHERE job_id = 'SA_MAN';

--문제2) EMPLOYEES 테이블에 등록되어 있는 인원수, 보너스가 NULL이 아닌
--인원수, 보너스의 평균, 등록되어 있는 부서의 수를 구하여 출력하라.
SELECT count(*),count(commission_pct), avg(commission_pct * salary) , count(DISTINCT department_id)
FROM employees
WHERE commission_pct is not null;


SELECT
    *
FROM employees;

--문제3) EMPLOYEES 테이블에서 부서별로 인원수, 평균 급여, 최저급여, 최고
--급여, 급여의 합을 구하여 출력하라.
SELECT department_id, count(department_id), trunc(avg(salary)), min(salary), max(salary), sum(salary) 
FROM employees
GROUP BY department_id
ORDER BY department_id ASC;

--문제4) EMPLOYEES 테이블에서 각 부서별로 인원수,급여의 평균, 최저 급여,
--최고 급여, 급여의 합을 구하여 급여의 합이 많은 순으로 출력하여라.
SELECT count(department_id),avg(salary) ,min(salary), max(salary), sum(salary) AS "급여의합" 
FROM employees
GROUP BY department_id
ORDER BY "급여의합" DESC;

--문제5) EMPLOYEES 테이블에서 부서별, 업무별 그룹하여 결과를 부서번호, 업
--무, 인원수, 급여의 평균, 급여의 합을 구하여 출력하여라.
SELECT department_id, job_id, count(*), trunc(avg(salary)), sum(salary)
FROM employees
GROUP BY department_id, job_id;


--문제6) EMPLOYEES 테이블에서 부서 인원이 4명보다 많은 부서의 부서번호,
--인원수, 급여의 합을 구하여 출력하여라.(GROUP BY, HAVING)

SELECT department_id, count(*), sum(salary)
FROM employees
GROUP BY department_id
HAVING count(*) > 4;

--문제7) EMPLOYEES 테이블에서 급여가 최대 10000이상인 부서에 대해서 부
--서번호, 평균 급여, 급여의 합을 구하여 출력하여라.
SELECT department_id, trunc(avg(salary)), sum(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary) >= 10000;


--문제8) EMPLOYEES 테이블에서 업무별 급여의 평균이 10000 이상인 업무에
--대해서 업무명,평균 급여, 급여의 합을 구하여 출력하라.
SELECT job_id, trunc(avg(salary)), sum(salary)
FROM employees
GROUP BY job_id
HAVING AVG(salary)>=10000;

--문제9) EMPLOYEES 테이블에서 전체 월급이 10000을 초과하는 각 업무에 대
--해서 업무와 급여 합계를 출력하라. 단 판매원(SA_)은 제외하고 월 급여 합계
--로 정렬(내림차순)하라
SELECT job_id,  sum(salary)
FROM employees
WHERE job_id NOT LIKE 'SA_%'
GROUP BY job_id
HAVING AVG(salary)>10000
ORDER BY sum(salary) DESC;
728x90