[Oracle] 쿼리연습3

2010. 4. 28. 16:25Database/Oracle


JOIN 문 : 물리적으로 분리되어 있는 테이블들의 레코드를 합쳐서

              보여줄 수 있는 쿼리문

 

1.업무(JOB) 가 MANAGER 인 사원의 이름,부서명, 입사일을 출력

 SELECT ENAME,DNAME,HIREDATE
 FROM EMP E, DEPT D
 WHERE E.DEPTNO=D.DEPTNO
 AND JOB='MANAGER'


2.사원명이 WARD 인 사원의 급여,부서번호,부서위치,커미션을 출력
  SELECT SAL,E.DEPTNO,LOC,COMM
  FROM EMP E, DEPT D
  WHERE E.DEPTNO=D.DEPTNO AND ENAME='WARD'
 

3.30번 부서에 속하는 사원의 이름, 부서번호,부서위치 를 출력

SELECT ENAME,E.DEPTNO,LOC FROM EMP

E,DEPT D WHERE E.DEPTNO=D.DEPTNO AND E.DEPTNO=30

 

4.급여가 1250 을 초과 ,  3000이하 인 사원의 이름,급여,부서명을 출력

SELECT ENAME,SAL,DNAME FROM EMP E,DEPT D

WHERE E.DEPTNO=D.DEPTNO AND SAL>1250 AND SAL<=3000

 

4-2. 급여가 1250 이상 3000 이하(범위가 포함될때는 BETWEEN 사용)
 SELECT ENAME,SAL FROM EMP
 WHERE SAL BETWEEN  1250  AND  3000;

 

5.커미션이 0 인 사원의 이름,부서위치, 커미션을 출력

SELECT ENAME,E.DEPTNO,COMM FROM EMP E,DEPT D WHERE

E.DEPTNO=D.DEPTNO AND COMM=0

 

6.커미션 계약을 하지 않은 사원의 이름,부서명을 출력

SELECT ENAME,DNAME FROM EMP E,DEPT D WHERE

E.DEPTNO=D.DEPTNO AND COMM IS NULL


7.입사일이 81/06/09보다 늦은 사원의 이름,부서위치, 입사일 출력하되,
   입사일을 기준으로 오름차순으로 출력하시오

SELECT ENAME,HIREDATE,E.DEPTNO,LOC FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO AND HIREDATE > '81/06/09' ORDER BY HIREDATE ASC


8.모든 사원의 급여마다 1000을 더한 급여액,사원명,급여,부서명을 출력 
SELECT ENAME,SAL+1000,SAL,DNAME FROM EMP E,DEPT D WHERE

E.DEPTNO=D.DEPTNO


9.FORD 의 입사일,부서명을 출력
SELECT HIREDATE,DNAME FROM EMP E,DEPT D WHERE

E.DEPTNO=D.DEPTNO AND ENAME='FORD'
 

10.사원명이 ALLEN인 사원의 급여,부서번호,부서위치를 출력하세요.
SELECT SAL,E.DEPTNO,LOC FROM EMP E,DEPT D WHERE

E.DEPTNO=D.DEPTNO AND ENAME='ALLEN'
  
11.ALLEN 의 급여보다 높은 급여를 받는 사원의 사원명 ,부서명,부서위치
    급여를 출력하세요

SELECT SAL,ENAME,DNAME,LOC FROM EMP E,DEPT D WHERE

E.DEPTNO=D.DEPTNO AND SAL > (SELECT SAL FROM EMP WHERE ENAME='ALLEN')

 

12.가장 높은/낮은 커미션을 구하세요.
SELECT MAX(COMM) FROM EMP; --최대값
SELECT MIN(COMM) FROM EMP; --최소값

 

13.가장 높은 커미션을 받는 사원의 이름,부서명을 구하세요.
SELECT ENAME,DNAME FROM EMP E,DEPT D WHERE

E.DEPTNO=D.DEPTNO AND COMM=(SELECT MAX(COMM) FROM EMP)

 

14.JOB 이 CLERK 인 사원들의 급여의 합을 구하세요

SELECT SUM(SAL) FROM EMP WHERE JOB='CLERK'

 

15.JOB 이 CLERK 인 사원들의 급여의 합보다 급여가 많은 사원이름,부서명을
     출력하세요

SELECT ENAME,DNAME FROM EMP E,DEPT D WHERE

E.DEPTNO=D.DEPTNO AND SAL > (SELECT SUM(SAL) FROM EMP WHERE JOB='CLERK')


16.JOB이 CLERK인 사원들의 급여와 같은 급여를 받는 사원의 이름,부서명,급여를
    출력하되, 급여가 높은 순으로 출력하세요

SELECT ENAME,DNAME,SAL FROM EMP E,DEPT D WHERE

E.DEPTNO=D.DEPTNO AND SAL IN (SELECT SAL FROM EMP WHERE JOB='CLERK')

ORDER BY SAL DESC

 

17.EMP 테이블의 구조 출력

DESC EMP;

'Database > Oracle' 카테고리의 다른 글

[Oracle] 제약조건  (0) 2010.04.28
[Oracle] 쿼리연습4  (0) 2010.04.28
[Oracle] 쿼리연습2  (0) 2010.04.28
[Oracle] 쿼리연습1  (0) 2010.04.28
[Oracle] 오라클 Admin실습1  (0) 2010.04.28