다중컬럼 서브쿼리의 종류
- non pair wise 방식
- pair wise 방식
1. non pair wise 방식
예제 : 부서번호가 30 번인 사원들과, 월급도 같고, 커미션도 같은 사원들의 이름과 월급과 커미션과 부서번호를 출력 하시오
select ename, sal, comm, deptno
from emp
where sal in (select sal
from emp ———————> 월급이 같은 컬럼 1
where deptno = 30 )
and comm in ( select comm
from emp ————> 커미션도 같은 컬럼 2
where deptno =30);
위와 같이 여러개의 컬럼 (ename, sal, comm, deptno ) 대한값이 서브쿼리에서 메인쿼리로 리턴이 되면 다중컬럼 서브쿼리문 입니다.
2.pair wise 방식
select ename, sal, comm, deptno
from emp
where (sal, comm) in (select sal, comm
from emp
where deptno =30);
출력해보면 1 번과 2 번의 차이점은 정렬이 좀 다르다.
non pair wise 의 방식과 pair wise 의 방식이 출력하는 결과는 서로 다르다.
- non pair wise : 부서번호 30번인 사원들 중에, 월급중에 하나와 커미션중에 하나라도 같으면 무조건 출력
- pair wise : 부서번호 30번인 사원의 그 월급과 그 커미션을 받는 사원들이어야지만 출력이된다.
EX)
- pair wise
sal comm 1250 1400 1250 500 1600 300 1500 0
-> pair wise 는 딱 네가지 경우만 가능하다 1250 에 1400 이런식으로
- non pair wise
sal comm 1250 1400 1250 500 1250 300 1250 0
-> 출력되는 값이 많다.
데이터를 분석하고자 하는 질문을 정확하게 파악하여서, 거기에 맞는 쿼리문을 작성해야한다.
문제 357 직업이 세일즈맨인 사원들과 월급이 같고
부서번호가 같은 사원들의 이름,월급,부서번호를 출력 (pair wise )
select ename, sal , deptno
from emp
where (sal, deptno) in (select sal, deptno
from emp
where job = 'SALESMAN');
'Oracle > SQL' 카테고리의 다른 글
SQL Sub Query Having 절 서브쿼리 (0) | 2021.11.28 |
---|---|
SQL Sub Query Exists / Not Exists 존재여부 (0) | 2021.11.28 |
SQL Sub Query 다중행 (IN, NOT IN) (0) | 2021.11.28 |
SQL Sub Query 단일행 where 절 (0) | 2021.11.28 |
SQL 집합연산자 Minus 차집합 (0) | 2021.11.28 |