업무에 파이썬 활용할 줄 알기

조인문에 between을 사용했을 때 중복이 어떻게 발생하는가? 본문

SQL/[데이터리안] SQL실전반

조인문에 between을 사용했을 때 중복이 어떻게 발생하는가?

SEO 데이터분석가 2024. 1. 22. 11:29

데이터리안 SQL 실전반 Week2 수업 중 

조인문을 아래와 같이 일반적인 방식이 아닌

table1 t1 left join table2 t2 on t1.date=t2.date

 

between 조건을 사용하는 조인문을 알게 되었다

from table t1 left join table t2 on t2.date between date_sub(t1.date, interval 6 day) and t1.date

 

쉽게 전달하자면

2020-11-01 데이터에 2020-10-26~2020-11-01 (이전 7일치)의 데이터를 붙여주기 위한 조인문이다.

 

문제 의식

이런 조인문을 썼을 때, left data인 2020-11-01데이터에 어마어마한 중복이 생길 것 같았다

2020-11-01 데이터에 2020-10-26~2020-11-01 데이터가 조인되는 것이니

단순 left data와 right data에 요일컬럼만 있었다고 생각해보면

left data의 2020-11-01 한개가 7개가 되는 것이다

그런데 문제는 실데이터에는 다른 컬럼 정보와 함께 2020-11-01만 해도 수십개가되는데,

이 수십개가 7일치 데이터만큼 뻥튀기가 되는것일지? 궁금했다

확인 결과

2020-11-01의 3개의 데이터가 join되는 21개만큼 곱해져서 데이터가 중복으로 더 생기는게 맞았다.

(2020-11-01의 3개) * (2020-10-26~2020-11-01의 21개) = 63개

 

 

 

☞ 본 내용은 데이터리안 'SQL 데이터 분석 캠프 실전반' 을 수강하며 작성한 내용입니다.