데이터분석 SQL - Non Equi Join / Cross Join

Data Architect / Engineer·2024년 1월 7일

데이터분석_SQL

목록 보기
4/4

Non Equi Join

  • 중요! : 두 테이블을 Join 할 때, Key 컬럼 값이 반드시 같을 필요는 없다!

  • Non Equi Join : Key 컬럼 값 연결 시, between, >, >=, <=, < 연산자를 사용하는 Join

  • Equi Join : Key 컬럼 값 연결 시, = 연산자로 키 값이 같은 경우 조인


Cross Join (Cartesian Product)

  • Join 컬럼 없이 두 테이블 간 가능한 모든 경우의 수를 결합하는 Join 방식
select a.*, b.* from table a cross join table b


예제

  1. 직원 정보와 급여 등급 정보 데이터를 추출
SELECT a.empno, a.ename, b.grade AS salgrade, b.losal, b.hisal
FROM hr.emp a
   JOIN hr.salgrade b ON a.sal BETWEEN b.losal AND b.hisal;


  1. 직원 급여의 이력정보를 나타내며, 해당 급여를 가졌던 시작 시점에서의 부서번호도 함께 가져올 것.
SELECT a.*, b.*
FROM hr.emp_salary_hist a
   JOIN hr.emp_dept_hist b ON a.empno = b.empno AND a.fromdate BETWEEN b.fromdate AND b.todate;


  1. Cross Join 예시 (추후 SQL을 이용한 분석 및 Batch 사용 시 자주 이용)
WITH
temp_01 AS (
SELECT 1 AS rnum
UNION ALL
SELECT 2 AS rnum
)
SELECT a.*, b.*
FROM hr.dept a
   CROSS JOIN TEMP_01 b;

profile
질문은 계속돼 아오에

0개의 댓글