데이터분석

24. JOIN

장수우 2023. 12. 29. 23:22
학습주제
  • JOIN이란?
  • 다양한 종류의 JOIN
주요 학습 내용
  • JOIN 이란?
    • 두 개 혹은 그 이상의 테이블들을 공통 필드를 가지고 머지하는데 사용된다.
    • 스타 스키마로 구성된 테이블들로 분산되어 있던 정보를 통합하는데 사용된다.
    • JOIN의 결과는 방식에 상관없이 양쪽의 필드를 모두 가진 새로운 테이블을 만들어내게 된다.
  • 다양한 종류의 JOIN
    • INNER JOIN 
      • 양쪽 테이블에서 매치가 되는 레코드들만 리턴한다.
      • 양쪽 테이블의 필드가 모두 채워진 상태로 리턴된다.
    • FULL OUTER JOIN
      • 왼쪽 테이블과 오른쪽 테이블의 모든 레코드들을 리턴한다.
      • 매칭되는 경우에만 양쪽 테이블들의 모든 필드들이 채워진 상태로 리턴된다.
    • CROSS JOIN 
      • 왼쪽 테이블과 오른쪽 테이블의 모든 레코드들의 조합을 리턴한다.
    • LEFT , RIGHT JOIN 
      • 베이스가 되는 테이블의 모든 레코드들을 리턴한다.
      • 베이스가 아닌 테이블은 베이스와 매칭되는 경우에만 채워진 상태로 리턴된다.
    • SELF JOIN 
      • 동일한 테이블을 alias들 달리해서 자기 자신과 조인한다.
  • JOIN 문법
    SELECT A.*, B.*
    FROM raw_data.table1 A
    ## (INNER, FULL, LEFT, RIGHT, CROSS)
    JOIN raw_dataa.table2 B ON A.key1=B.key1 and A.key2 = B.key2
    WHERE A.ts >= '2019-01-01';​
  • JOIN시 고려해야할 점
    • 중복 레코드가 없고 Primary Key의 uniqueness가 보장됨을 체크한다. (매우중요)
    • 조인하는 테이블들간의 관계를 명확하게 정의
      1. One to one
      2. One to many? (order vs orer_items)
        - 이 경우는 중복이 더 큰 문제가 된다 (증폭)
      3. Many to one?
        - 방향만 바꾸면 One to many로 보는 것과 사실상 동일하다.
      4. Many to many?
        - 거의 없고 One to one 이나 one to many로 바꾸는 것이 좋다.
    • 어느 테이블을 베이스로 잡을지 (From에 사용할지) 결정해야한다.
공부하면서 어려웠던 내용
  • JOIN 개념을 알고 사용해보는데 생각보다 어려웠다 지속적으로 연습해야겠다.
반응형

'데이터분석' 카테고리의 다른 글

26. Pandas  (1) 2024.01.04
25. 트랜잭션 및 SQL 고급 문법  (0) 2023.12.30
23. GROUP BY & AGGREGATE  (0) 2023.12.29
22. SQL 코드 작성  (0) 2023.12.29
21. 관계형 데이터 베이스, 데이터 웨어하우스  (1) 2023.12.18