2014년 4월 28일 월요일

오라클 5장 연습문제 및 정답

◈ 연 습 문 제 ◈

1. EMP 테이블에서 인원수,최대 급여,최소 급여,급여의 합을 계산하여 출력하는 SELECT 문장을 작성하여라.

select COUNT(ename) as 인원수
        ,MAX(sal) as 최대급여
        ,MIN(sal) as 최소급여
        ,SUM(sal) as 급여합
from emp;
è  그룹함수 이용하여, 출력

2. EMP 테이블에서 각 업무별로 최대 급여,최소 급여,급여의 합을 출력하는 SELECT 문장을 작성하여라.

select job as 업무
        ,MAX(sal) as 최대급여
        ,MIN(sal) as 최소급여
        ,SUM(sal) as 급여합
from emp
group by job;
è  Groupby 이용하여, 직업별로 묶어서 출력

3. EMP 테이블에서 업무별 인원수를 구하여 출력하는 SELECT 문장을 작성하여라.

select job as 업무, count(ename) as 인원수
from emp
group by job;
è  Groupby 한 뒤 카운트를 이용하여, 업무별로 구함





4. EMP 테이블에서 최고 급여와 최소 급여의 차이는 얼마인가 출력하는 SELECT 문장을 작성하여라.

select max(sal) - min(sal) as 급여차
from emp;
è  Max min 구해서 차를 구함




5. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.
H_YEAR  COUNT(*)  MIN(SAL)  MAX(SAL)  AVG(SAL)  SUM(SAL)
------ --------- --------- --------- --------- ---------
80             1       800       800       800       800
81            10       950      5000    2282.5     22825
82             2      1300      3000      2150      4300
83             1      1100      1100      1100      1100

select trunc(hiredate, 'YY') AS H_YEAR, COUNT(*), MIN(SAL), MAX(SAL), AVG(SAL), SUM(SAL)
from emp
group by trunc(hiredate, 'YY');
è  Groupby trunc로 짤라서 모으고, 셀렉트문에서 출력.


6. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.
    TOTAL      1980      1981      1982      1983
--------- --------- --------- --------- ---------
       14         1        10         2         1

select count(*) as total
      ,sum(decode(to_char(hiredate, 'YYYY'), 1980,1,0)) as "1980"
      ,sum(decode(to_char(hiredate, 'YYYY'), 1981,1,0)) as "1981"
      ,sum(decode(to_char(hiredate, 'YYYY'), 1982,1,0)) as "1982"
      ,sum(decode(to_char(hiredate, 'YYYY'), 1983,1,0)) as "1983"
from emp;
è  디코드문으로 년도별인것만 골라낸 뒤 sum을 해줘서 몇 명인지 구함

7. EMP 테이블에서 아래의 결과를 출력하는 SELECT 문장을 작성하여라.
JOB       Deptno 10 Deptno 20 Deptno 30     Total
--------- --------- --------- --------- ---------
ANALYST                  6000                6000
CLERK          1300      1900       950      4150
MANAGER        2450      2975      2850      8275
PRESIDENT      5000                          5000
SALESMAN                           5600      5600

select job
      ,sum(decode(deptno, 10, sal)) as Deptno10
      ,sum(decode(deptno, 20, sal)) as Deptno20
      ,sum(decode(deptno, 30, sal)) as Deptno30
      ,sum(sal) as total
from emp
group by job
order
by job;

è  디코드문을 이용해서 부서번호가 10,20,30인사람별로 급여 합을 구함

댓글 없음:

댓글 쓰기