IT_SQL

[분석 실전] SQL JOIN 심화(2). join 종류와 구문 팁! inner join, left join~

soyounism 2021. 11. 4. 23:24

안녕하세요.

이번 포스팅에서는, JOIN을 통해서 여러 테이블을 연결하는 구문 상세팁을 준비했습니다.

실무 데이터 분석을 하신다면 꼼꼼히 봐주세요

 

JOIN 구문 종류!

 

 

앞  포스팅에서 KEY 값이 null인 경우에는, 해당 행이 삭제된다고 말씀드렸죠?

 

하지만, JOIN 에도 여러 유형이 있습니다

 

 

1. Inner Join(대표적인 join)

결과 : 두개 테이블 모두 공통으로 존재하는 행만 남음

필요 : 두개 테이블에 join키가 빠짐없이 둘다 존재할 때 

 

 

2. Left Join

결과 : 왼쪽 테이블을 기준으로 오른쪽 테이블에 조인되는 값이 없는 경우에는 null로 표기됨

필요 : 한개 이상의 테이블에 join key에 null값이 있거나, 테이블1에 있는값이 테이블2에 없을때 사용

ex> key를  날려버리면 안되는 경우에 주로 사용(고객정보 key 등)

 

* 두 테이블의 관계를 잘 모르는 경우에는 left join을 많이 사용합니다

* 하지만 inner join이 수행속도가 훨씬 빠르다고 합니다. 성능면에서는 inner join!

 

 

3. (참고.잘안씀) Right Join

left join과 반대의미라고 보면됩니다.

굳이 right join을 쓸 이유가 없습니다(헷갈려요)

left join 쓰면되니까요

 

 

4. (참고. 잘안씀) Full Join

모든 값이 합쳐짐

초보자 수준에서는 자주 쓰지 않습니다

 

 

 

이제 참고 사례를 보여드릴게요

 

아래에 key로 사용한 userid는 null값이 포함되어 있습니다

1. inner join

select uc.gender, sum(gmv)
from order_csv oc
join user_csv uc on oc.userid =uc.userid 
group by 1
order by 1

 

2. left join

select uc.gender, sum(gmv)
from order_csv oc
left join user_csv uc on oc.userid =uc.userid 
group by 1
order by 1

left join의 경우 null값이 포함됩니다

테이블1의 경우에는 key 값에 null이 없었고, 테이블2의 경우에는 null값이 있는 data입니다

 

*참고로 join앞에 inner을 붙이거나 join만 써도 'inner join' 형식으로 join됩니다

select uc.gender, sum(gmv)
from order_csv oc
inner join user_csv uc on oc.userid =uc.userid 
group by 1
order by 1

 


SQL쿼리는 굉장히 직관적이라, 몇번 따라해보면 크게 어렵게 생각하실 필요가 없어요.

 

이제 남은 몇가지 중요한 파트들도 열심히 진행해볼게요

실무에서 데이터분석하기! 빠르게 진행해볼게요~

 

데이터 분석 실무 초고속 정복하기!

더 좋은 꿀팁들을 알고 계시면 공유해주세요!^^