steadilee
FRACTAL
steadilee
전체 방문자
오늘
어제
  • 분류 전체보기 (47)
    • Knowledge (0)
      • 컴퓨터 (0)
    • Data Analysis (7)
      • 공부 (4)
      • Simple Analysis (0)
      • ML,DL (3)
      • Kaggle (0)
    • Skill (40)
      • SQL 이론 (3)
      • Oracle (18)
      • MySQL (0)
      • Python (5)
      • Linux (2)
      • C,C#,C++ (8)
      • Java (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
steadilee

FRACTAL

다중컬럼 서브쿼리 : Pair   vs Non pair
Skill/Oracle

다중컬럼 서브쿼리 : Pair vs Non pair

2022. 6. 2. 17:41

여러 개의 컬럼값을 반환하는 다중컬럼 서브쿼리의 작성 방식은 Pair wise와 Non pair wise로 구분할 수 있다.

 

두 가지 방식에 대해서

Oracle에서는 모두 지원하고 있으며, Mssql에서는  non pair wise만 지원하고 있다.

 

 

1. Non pair wise

반환하고자 하는 여러 개의 컬럼에 대해 각각 서브쿼리문을 작성

select ename, age, telecom
	from emp15
	where age in (select age from emp15 where ename like '이%')
	and telecom in (select telecom from emp15 where ename like '이%');

 

 

2. pair wise

반환하고자 하는 여러 개의 컬럼값을 묶음으로 서브쿼리문 작성

 

select ename, age, telecom
	from emp15
	where (age, telecom) in(select age, telecom 
				from emp15
				where ename like '이%');

 

※ non pair wise 방식보다는 pair wise 방식이 코딩이 더 짧아서 더 선호되는 SQL로 보이나,

    pair wise 방식과 non pair wise 방식이 출력되는 결과가 서로 다르기에 비교될 수 없다.

 

 

아래의 예시를 통해 차이를 확인하자

 

(예시) 아래의 emp 테이블 활용하여,

부서번호가 30번인 사원들과 월급이 같고 커미션이 같은 사원들의 이름과 월급과 커미션과 부서번호를 출력하시오

 

 

1. Non pair wise  방식

select ename, sal, comm, deptno
    from emp
    where sal in (select sal
                        from emp
                        where deptno = 30)
    and comm in (select comm
                        from emp
                        where deptno = 30);

 

  • KING이 출력됨
  • Non pair wise에서는 sal과 comm 각각이 주어진 조건 내에 있기만 하면 return됨.
  • 가능한 (sal, comm) 조합
    • 가능한 sal : 1250, 1600, 1500
    • 가능한 comm : 1400,300,0,500
    • 총 12가지 조합 가능

 

2.Pair wise 방식

select ename, sal, comm, deptno
    from emp
    where (sal, comm) in (select sal, comm
                        from emp
                        where deptno = 30);

 

  • KING 이 출력되지 않음
  • sal, comm이 짝지어져 정확히 일치하는 경우 (총 4가지) 만 출력

 

 

 

 

 

위와 같이 pair wise와 non pair wise는 동일 테이블에 대해 서로 다른 접근 방식으로 수행된다.

저작자표시 비영리 변경금지 (새창열림)

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

오라클 비밀번호 만료 시 재설정 및 기한 무제한으로 변경  (0) 2023.03.02
오라클 에러 정보(ORA-40104)  (0) 2022.06.13
Roll Up 함수 결과 예측하기  (0) 2022.05.30
오라클 선형회귀함수  (0) 2022.05.26
Oracle 초급 : ROW-COLUMN 전환  (0) 2022.05.24
    'Skill/Oracle' 카테고리의 다른 글
    • 오라클 비밀번호 만료 시 재설정 및 기한 무제한으로 변경
    • 오라클 에러 정보(ORA-40104)
    • Roll Up 함수 결과 예측하기
    • 오라클 선형회귀함수
    steadilee
    steadilee

    티스토리툴바