본문으로 바로가기
728x90
반응형
 

오라클 SQL과 PL/SQL | 서진수 - 교보문고

오라클 SQL과 PL/SQL | SQL과 PL/SQL에 대한 가장 쉽고 친절한 입문서SQL과 PL/SQL에 대한 내용은 방대하며 어려운 내용들이 많기 때문에 처음 공부하는 학습자는 스스로 공부하기가 쉽지 않다. 이 책은

product.kyobobook.co.kr

 

 

연습문제 5 pg.214

 

emp테이블을 사용하여 직원들의 급여와 전체 급여의 누적 급여금액이 아래와 같도록 출력하세요. 단, 급여를 오름차순으로 정렬해서 출력하세요.

 

SQL

 

 

반응형

 

1
2
select deptno, ename, sal, sum(sal) over(order by sal)
from emp;
cs

 

실행 결과

 

 


연습문제 6  pg.214

 

fruit 테이블을 아래와 같은 형태로 출력하세요.

 

SQL

 

 

 

1
2
3
4
select sum(decode(name, 'apple', price)) "APPLE",
       sum(decode(name, 'grape', price)) "GRAPE",
       sum(decode(name, 'orange', price)) "ORANGE"
from fruit;
cs

 

 

실행 결과

 

 


 

연습문제 7  pg. 214

 

student테이블의 tel 칼럼을 사용하여 아래와 같이 지역별 이누언수와 전체 대비 차지하는 비율을 출력하세요. 단 02-SEOUL, 031-GYEONGGI, 051-BUSAN, 052-ULSAN, 053-DAEGU, 055-GYEONGNAM으로 출력하세요.

 

SQL

 


1
2
3
4
5
6
7
8
select count(tel)||'EA'||' ('||round(count(tel)/count(tel)*1000)||'%)' "TOTAL",
       count(decode(substr(tel, 0, instr(tel, ')')-1), '02'0))||'EA'||' ('||round(count(decode(substr(tel, 0, instr(tel, ')')-1), '02'0))/count(tel)*1000)||'%)' "SEOUL",
       count(decode(substr(tel, 0, instr(tel, ')')-1), '031'0))||'EA'||' ('||round(count(decode(substr(tel, 0, instr(tel, ')')-1), '031'0))/count(tel)*1000)||'%)' "GYEONGGI",
       count(decode(substr(tel, 0, instr(tel, ')')-1), '051'0))||'EA'||' ('||round(count(decode(substr(tel, 0, instr(tel, ')')-1), '051'0))/count(tel)*1000)||'%)' "BUSAN",
       count(decode(substr(tel, 0, instr(tel, ')')-1), '052'0))||'EA'||' ('||round(count(decode(substr(tel, 0, instr(tel, ')')-1), '052'0))/count(tel)*1000)||'%)' "ULSAN",
       count(decode(substr(tel, 0, instr(tel, ')')-1), '053'0))||'EA'||' ('||round(count(decode(substr(tel, 0, instr(tel, ')')-1), '053'0))/count(tel)*1000)||'%)' "DAEGU",
       count(decode(substr(tel, 0, instr(tel, ')')-1), '055'0))||'EA'||' ('||round(count(decode(substr(tel, 0, instr(tel, ')')-1), '055'0))/count(tel)*1000)||'%)' "GYEONGNAM"
from student;
cs

 

 

실행 결과

 

 


연습문제 8  pg.215

 

emp테이블을 사용하여 아래와 같이 부서별로 급여 누적 합계가 나오도록 출력하세요. 단, 부서 번호로 오름차순 출력하세요.

 

SQL

 


1
2
select deptno, ename, sal, sum(sal) over(partition by deptno order by sal) "TOTAL"
from emp;
cs

 

실행 결과

 


 

연습문제 9  pg.215

 

emp테이블을 사용하여 아래와 같이 각 사원의 급여액이 전체 직원 급여 총액에서 몇%의 비율을 차지하는지 출력하세요. 단, 급여 비중이 높은 사람이 먼저 출력 되도록 하세요.

 

SQL

 


1
2
3
4
select deptno, ename, sal, sum(sal) over() "TOTAL_SAL", round(ratio_to_report(sum(sal)) over()*1002"%"
from emp
group by deptno, ename, sal
order by sal desc;
cs

 

실행 결과

 

 


 

728x90
반응형