2014년 4월 28일 월요일

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

◈ 연 습 문 제 ◈

1. EMP 테이블에서 모든 사원에 대한 이름,부서번호,부서명을 출력하는 SELECT 문장을 작성하여라.

select A.ename, A.deptno, B.DNAME
from emp A join dept B
on A.DEPTNO = B.DEPTNO
è  join으로 부서번호를 걸고 dept 테이블에 부서명을 가져와서 출력

2. EMP 테이블에서 NEW YORK에서 근무하고 있는 사원에 대하여 이름,업무,급여,부서명을 출력하는 SELECT 문장을 작성하여라.

select ename, job, sal, b.dname
 from emp a, dept b
where a.deptno = b.deptno
  and b.LOC = 'NEW YORK';
è  부서번호로 조인을 걸고, dept테이블에 조건으로 뉴욕을 걸어서 출력합니다.

3. EMP 테이블에서 보너스를 받는 사원에 대하여 이름,부서명,위치를 출력하는 SELECT 문장을 작성하여라.

select a.ename, b.dname, b.loc
 from emp a join dept b
 on a.deptno = b.deptno
where a.comm is not null
  and a.comm <> '0';
è  Deptno로 조인한 후 보너스가 null이 아닌 것과 0이 아닌 것으로 조건 설정 후 출력

4. EMP 테이블에서 이름 중 L자가 있는 사원에 대하여 이름,업무,부서명,위치를 출력하는 SELECT 문장을 작성하여라.

select a.ename, a.job, b.dname, b.loc
 from emp a join dept b
   on a.deptno = b.deptno
where a.ename Like '%L%';

è  Deptno 조인한 L자가 들어간사람을 조건을 Like 걸어서 조건대로 출력

5. 아래의 결과를 출력하는 SELECT 문장을 작성하여라.(관리자가 없는 King을 포함하여 모든 사원을 출력)
Employee        Emp# Manager         Mgr#
---------- --------- ---------- ---------
KING            7839
BLAKE           7698 KING            7839
CLARK           7782 KING            7839
. . . . . . . . . .
14 rows selected.

select a.ename as Employee, a.empno as Emp#, b.ename as Manager, b.mgr as Mgr#
from emp a join emp b
  on a.mgr = b.empno
order by a.mgr desc;
è  emp테이블 하나로 셀프조인하여, 사원번호랑 매니저번호를 조인해서, 자신의 매니저를 보여주도록 출력

6. EMP 테이블에서 그들의 관리자 보다 먼저 입사한 사원에 대하여 이름,입사일,관리자 이름, 관리자 입사일을 출력하는 SELECT 문장을 작성하여라.

select a.ename     as 이름
         ,a.hiredate   as 입사일
         ,b.ename     as 관리자이름
         ,B.HIREDATE as 관리자입사일
from emp a, emp b
where a.mgr = b.empno
   and a.hiredate < b.hiredate;
è  셀프조인으로 사원번호와 관리자번호 매칭 후 입사일을 비교하여, 먼저 입사한 사원만 출력


7. EMP 테이블에서 사원의 급여와 사원의 급여 양만큼 *를 출력하는 SELECT 문장을 작성하여라. * 100을 의미한다.
Employee and their salary
-----------------------------------------------------------------
KING      **************************************************
BLAKE     ****************************
CLARK     ************************
JONES     *****************************
MARTIN    ************
ALLEN     ****************
TURNER    ***************
. . . . . . . . . .
14 rows selected.

select ename, rpad( ' ' ,trunc (sal / 100) , '*') as 급여별 
from emp
order by sal desc;
è  급여를 100으로 나눈 개수만큼 별을 찍어야하기 때문에 소수점은 절삭한 rpad 함수를 이용하여 왼쪽부터 * 채워서 출력.


댓글 없음:

댓글 쓰기