* Subquery
- select 구문 내부에 select 구문이 존재
단일행 서브쿼리 : 서브쿼리의 결과가 1개인 겨우.
사용가능 연산자 : =, >, <, ...
다중행 서브쿼리 : 서브쿼리의 결과가 여러개인 경우.
사용가능 연산자 : in
- emp 테이블에서 'SCOOT' 사원의 급여보다 급여가 많은 사람의 이름과 급여 출력하기
select sal from emp where ename = 'SCOTT';
select ename,sal from emp where sal > 3000;
-
select ename, sal from emp where sal > (select sal from emp where ename = 'SCOTT');
ex) 이름, 학년, 학과번호를 조회하는데 홍길동과 같은 학년의 정보를 조회하기.
select name, grade, deptno1 from student where grade = (select grade from student where name ='홍길동');
- 홍길동,김진욱 학생과 같은 학년의 이름, 학년, 학과번호 출력
- 컬럼이 하나면 = 를 사용하면 되지만 조건이 여러개면 in을 써야한다. - 다중행
select name, grade, deptno1 from student
where grade in (select grade from student where name in ('홍길동','김진욱'));
ex) emp2 테이블에서 전체 직원 중 과장 직급의 최소 연봉보다 높은 사람의 이름, 직급, 연봉 출력
-- 1. 과장 직급의 최소 연봉자
select min(pay) from emp2 where position = '과장';
-- 2. 최소연봉자보다 연봉이 높응ㄴ 사람의 이름, 직급, 연봉출력
select name, position,pay from emp2 where pay > 49000000;
-- 1+2
select name, position, pay from emp2 where pay > (select min(pay) from emp2 where position = '과장');
'Oracle SQL' 카테고리의 다른 글
Oracle SQL #8 DML, DDL, TCL (0) | 2022.03.20 |
---|---|
Oracle SQL #6 Join (4) | 2022.03.20 |
Oracle SQL #5 그룹함수(group by), sum, avg, max, min, having (0) | 2022.03.19 |
Oracle SQL #4 문자 관련 함수,수 관련 함수, 날짜함수, 형변환 함수, 기타 함수 (0) | 2022.03.19 |
Oracle SQL #3 Order by, union, Union all (0) | 2022.03.19 |