DB/OracleSQL

복습문제 - 그룹행 함수

do-oni 2021. 7. 12. 22:56

07.07 복습문제 - 그룹행 함수

Q. 4-1 사원 테이블에서 최대 월급을 출력하시오
select max(sal)
from emp;​

 

Q. 4-2 직무가 SALESMAN 인 사원들 중에서 최대월급을 출력하시오
select max(sal)
from emp
where job = 'SALESMAN';​

 

Q. 4-3 부서번호, 부서번호별 최대월급을 출력하는데 부서번호별 최대월급이 높은것 부터 출력하시오
select deptno, max(sal)
from emp
group by deptno
order by sum(sal) desc;​
Q. 4-4 위의 결과에서 부서번호 20번은 제외하고 출력하시오
select deptno, max(sal)
from emp
where deptno not like '%20%'
group by deptno
order by sum(sal) desc;​
Q. 4-5 커미션의 평균값을 출력하시오
select avg(comm)
from emp;​
Q. 4-6 위의 결과를 다시 출력하는데 전체 사원수로 나누게 하시오
select sum(nvl(comm,0))/14
from emp;​
Q. 4-7 직무, 직무별 토탈월급을 출력하는데 직무가 SALESMAN 인 사원들을 제외하고 출력하 고 직무별 토탈월급이 높은것부터 출력하는데 직무별 토탈월급을 출력할때에 천단위 를 부여해서 출력하시오
select job, to_char(sum(sal),'999,999')
from emp
where job != 'SALESMAN'
group by job
order by 2 desc;​
Q. 4-8 부서번호, 부서번호별 토탈월급을 출력하시오
select deptno, sum(sal)
from emp
group by deptno;​
Q. 4-9 위의 결과를 가로로 출력하시오 (부서번호를 모두 안다고 가정)
select sum(decode(deptno,10,sal)) as "10"
        ,sum(decode(deptno,20,sal)) as "20"
        ,sum(decode(deptno,30,sal)) as "30"
from emp;​
Q. 4-10 직무, 직무별 토탈월급을 출력하시오
select job, sum(sal)
from emp
group by job;​
Q. 4-11 위의 결과를 다시 출력하는데 직무별 토탈월급이 5000 이상인것만 출력하시오
select job, sum(sal)
from emp
group by job
having sum(sal) >= 5000;​
Q. 4-12 직무, 직무별 토탈월급을 출력하는데 직무가 SALESMAN 은 제외하고 출력하고 직무 별 토탈월급이 4000 이상인것만 출력하고 직무별 토탈월급이 높은것부터 출력하시오
select job, sum(sal)
from emp
where job != 'SALESMAN'
group by job
having sum(sal) >= 4000
order by sum(sal) desc;​
Q. 4-13 사원 테이블의 전체 건수를 확인하시오
select count(*)
from emp;​
Q. 4-14 직무, 직무별 인원수를 출력하시오
select job, count(*)
from emp
group by job;​
Q. 4-15 직무, 직무별 평균월급을 출력하시오
select job, round(avg(sal))
from emp
group by job;​
Q. 4-16 위의 결과중에 최대값을 출력하시오
select max(round(avg(sal)))
from emp
group by job;​
Q. 4-17 직무, 부서번호, 직무별 부서번호별 토탈월급을 출력하시오
select job,
        sum(decode(deptno,10,sal)) as "10"
        ,sum(decode(deptno,20,sal)) as "20"
        ,sum(decode(deptno,30,sal)) as "30"
from emp
group by job;

 

Q. 4-18 입사한 년도(4자리), 입사한 년도별 토탈월급을 출력하시오
select to_char(hiredate, 'rrrr'), sum(sal)
from emp
group by to_char(hiredate,'rrrr');

 

Q. 4-19 위의 결과를 가로로 출력하시오
select sum(decode(to_char(hiredate,'rrrr'),'1980',sal)) "1980",
        sum(decode(to_char(hiredate,'rrrr'),'1981',sal)) "1981",
        sum(decode(to_char(hiredate,'rrrr'),'1982',sal)) "1982",
        sum(decode(to_char(hiredate,'rrrr'),'1983',sal)) "1983"
from emp;​