-- 중첩질의 : 단순비교
--평균 급여를 구하는 쿼리문을 서브 쿼리로 사용하여
--평균 급여보다 더 많은 급여를 받는 사원을 검색
select *
from emp -- ↓ 평균급여
where sal > (select avg(sal)from emp)
;
-- SCOTT 사원의 같은 부서에 근무하는 사원의 리스트를 출력
select deptno from emp where ename='SCOTT'; --20
select ename, deptno from emp
where deptno=(select deptno from emp where ename='SCOTT');
-- sal>3000이상 받는 사원이 소속된 부서
select distinct deptno from emp where sal >=3000;
select *
from emp
--where deptno=10 or deptno=20
where deptno in (select distinct deptno from emp where sal >=3000)
;
--30번 소속 사원들 중에서 급여를 가장 많이 받는 사원보다
--더 많은 급여를 받는 사람의 이름, 급여를 출력하는 쿼리문을 작성해 봅시다.
select sal from emp where deptno=30;
select ename, sal from emp
where sal> all (select sal from emp where deptno=30);
-- 모든게 다 만족해야할 때
--다음은 부서번호가 30번인 사원들의 급여 중
--가장 작은 값(950)보다 많은 급여를 받는 사원의 이름,
--급여를 출력하는 예제를 작성해 봅시다.
select ename, sal from emp
where sal> any (select sal from emp where deptno=30);
-- ROWNUM #입력순 (로우넘 날짜순X)
select rownum, empno, ename, hiredate
from emp
order by hiredate
;
-- 기준에 맞춰 몇개 뽑아내기
select rownum, empno, ename, hiredate
from emp
where rownum<4
order by hiredate
;
select rownum, empno, ename, hiredate from emp order by hiredate
;
-- ROWNUM 날짜순 O
select rownum, empno, ename, hiredate
from (select rownum, empno, ename, hiredate from emp order by hiredate desc)
where rownum<4 -- 입사일이 제일 최근인 세명 (desc)
;
-- 가장 급여를 많이 받는 사원 3명을 출력하자
select rownum, ename, sal from emp order by sal desc;
select rownum, ename, sal
from(select rownum, ename, sal from emp order by sal desc)
where rownum<4
;
'DB > Oracle SQL' 카테고리의 다른 글
[ORACLE SQL] DDL _ALTER TABLE / 테이블 칼럼 추가/변경/삭제 (0) | 2020.11.12 |
---|---|
[ORACLE SQL] DDL _ CREATE TABLE / 테이블 생성 (0) | 2020.11.12 |
[ORACLE SQL] 서브쿼리 / 부속질의 (0) | 2020.11.11 |
[ORACLE SQL] 조인 (0) | 2020.11.11 |
[ORACLE SQL] 그룹함수 (0) | 2020.11.10 |
[ORACLE SQL] 함수 / DECODE / CASE / TO_CHAR / TO_NUMBER (0) | 2020.11.10 |
[ORACLE SQL] 정렬을 위한 order by (0) | 2020.11.09 |