2023/11/29

anso·2023년 11월 28일
0

TIL

목록 보기
14/20
post-thumbnail

JOIN

두 개 혹은 그 이상의 테이블들을 공통 필드를 가지고 merge하는데 사용

  • 스타 스키마로 구성된 테이블들로 분산되어 있떤 정보를 통합하는데 사용
  • 대부분 LEFT JOIN과 INNER JOIN만 사용
SELECT A.*, B.*
FROM raw_data.table1 A
(INNER,FULL,LEFT,RIGHT,CROSS) JOIN raw_table2 B ON A.key1 = B.key1 and A.key2 = B.key2
WHERE A.ts >= '2019-01-01';

JOIN시 고려 사항

  • 중복 레코드가 없고, Priamry Key uniqueness가 보장되는지 확인
  • 조인하는 테이블 간의 관계를 명확하게 정의
    : one to one / one to many / many to one / many to many
  • 어느 테이블을 베이스로 할지 결정

INNER JOIN

  • LEFT ∩ RIGHT

LEFT JOIN

  • LEFT ∪ (LEFT ∩ RIGHT)

RIGHT JOIN

  • RIGHT ∪ (RIGHT ∩ LEFT)

FULL JOIN

  • LEFT ∪ RIGHT
  • 쓸 일이 아주 가끔 있음

CROSS JOIN

  • LEFT와 RIGHT의 모든 레코드들의 조합을 리턴
    EX) 3개의 레코드 테이블 A CROSS JOIN 4개의 레코드 테이블 B → 총 3*4개 레코드 추출

SELF JOIN

  • 동일한 테이블 두 개를 가지고 JOIN

BOOLEAN 타입 처리

  • 종류 : True, False, NULL
  • 다음 2개는 동일한 표현
    • flag = True
    • flag is True
  • 다음 2개는 동일하지 않은 표현
    • flag is True
    • flag is not False

NULL 비교

  • NULL비교는 항상 IS 혹은 IS NOT으로 수행
  • = 혹은 != 혹은 <>으로 수행하면 잘못된 결과 출력됨

NULLIF

  • NULLIF(value,0) : value가 0이면 NULL 리턴

COALESCE

  • NULL값을 다른 값으로 바꿔주는 함수
  • COALESCE(exp1, exp2, exp3, ...)
    • exp1부터 인자를 하나씩 살펴서 NULL이 아닌 값이 나오면 그걸 리턴
    • 끝까지 갔는데도 모두 NULL이면 최종적으로 NULL리턴
SELECT
 value,
 COALESCE(value,0) -- value가 NULL이면 0 리턴
FROM raw_data.count_test;

0개의 댓글