SELECT * FROM emp;
SELECT * FROM DEPT;
SELECT EMPNO, ENAME, JOB, SAL
FROM EMP
WHERE SAL >= (
SELECT SAL
FROM EMP
WHERE ENAME = 'SCOTT'
);
;
--EMP 테이블에서 사원번호가 7521의 업무와 같고, 급여가 7934보다 많은 사원의 정보를
--사원번호, 이름 담당업무, 입사일자, 급여 순으로 출력하시오
SELECT EMPNO, ENAME, JOB, HIREDATE, SAL
FROM EMP
WHERE JOB = (
SELECT JOB
FROM EMP
WHERE EMPNO = 7521
)
AND SAL > (
SELECT SAL
FROM EMP
WHERE EMPNO = 7934
);;;
--AND SAL = SELECT SAL // >(단일행 함수) 이기 때문에 검색이 하나만 가능하다.
--EMP테이블에서 급여의 평균보다 적은 사원의 정보를
--사원번호, 이름, 담당업무, 급여, 부서번호 순으로 출력하시오
;;
SELECT EMPNO, ENAME, JOB , HIREDATE, SAL
FROM EMP
WHERE SAL > (
SELECT AVG(SAL)
FROM EMP
) ;
--EMP 테이블에서 20번 부서의 최소 급여보다 많은 부서를 출력하시오
;;
SELECT DEPTNO, MIN(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING MIN(SAL) > (
SELECT MAX(SAL)
FROM EMP
WHERE DEPTNO = 20
);
--그룹바이에서 조건주는 것은 HAVING
;;
SELECT SAL FROM EMP WHERE DEPTNO = 20;
--확인작업 MIN(최소값이 없으면) 5개가 출력이 된다
SELECT EMPNO, ENAME, JOB, HIREDATE, SAL, DEPTNO
FROM EMP
WHERE SAL IN (
SELECT MIN(SAL)
FROM EMP
GROUP BY DEPTNO
);
--각 부서의 비교값을 비교하는데에 있어서 단일행 연산자가 아닌 IN을 사용한다 1:4 / = <-X
--IN을 쓰면 4개의 출력값을 1개로 4번 비교하는 절차가 발생한다.
--사원테이블에서 업무별로 최소 급여를 받는 사원의 정보를 사원번호, 이름, 업무, 입사일자
--급여, 부서번호 순으로 출력하시오
SELECT EMPNO, ENAME, JOB , HIREDATE, SAL
FROM EMP
WHERE (JOB,SAL) IN (
SELECT JOB, MIN(SAL)
FROM EMP
GROUP BY JOB
);
--WHERE (JOB,SAL)<- 다중열 서브쿼리
-- 문제의 요지에 맞는 두가지 테이블의 값을 가져오려고 할때에는 다중열을 이용한다.
SELECT EMPNO, ENAME, JOB , HIREDATE, SAL
FROM EMP
WHERE DEPTNO != 30 AND SAL > ANY (
SELECT MIN(SAL)
FROM EMP
GROUP BY JOB
);
--ANY는 최소값으로 구하는 것이다. 서브쿼리 안에 있는 실행결과들을 가지고 SAL>과 비교
--DEPTNO != 30 <- 30이 아닌 것을 빼준다.
--최대값 ALL / ALL을 비교하는
;;;
SELECT EMPNO, ENAME, JOB , HIREDATE, SAL
FROM EMP
WHERE DEPTNO != 30 AND SAL > ALL (
SELECT SAL
FROM EMP
WHERE DEPTNO = 30
);
--보고를 받을 수 있는 사원의 정보를 출력하라 ( 부하직원이 있는 사람)
SELECT EMPNO, ENAME, JOB, HIREDATE, SAL, DEPTNO
FROM EMP E
WHERE EXISTS (
SELECT SAL
FROM EMP
WHERE E.EMPNO = MGR
)
ORDER BY EMPNO;
-- MGR = 사원번호 / E.EMPNO 사원번호 = MGR (상사의 사원번호)
-- EXISTS 존재하다 ( 하나라도 있으면 찍어라)
-- 부하직원이 있다.
;
SELECT EMPNO, MGR FROM EMP ORDER BY MGR ASC, EMPNO ASC;
--다중열 서브쿼리
위에 있음
'IT > Oracle' 카테고리의 다른 글
오라클 8탄 [데이터 조작어 DML] (0) | 2015.07.23 |
---|---|
오라클 7탄 (테이블 생성및 삭제) (1) | 2015.07.21 |
오라클 함수정리 6탄 1(hr테이블) (0) | 2015.07.19 |
오라클 함수정리 5탄 [JOIN] (0) | 2015.07.18 |
오라클 함수정리 4탄 (그룹함수) (0) | 2015.07.18 |