본문 바로가기

데이터 다루기

스파르타코딩클럽 SQL 3주차 - join 개발일지

 
 

3주차 복습 시작

 

join의 등장

join이란?

각 테이블의 공통된 정보(key값이라 한다)를 기준으로 테이블을 연결해서 하나의 테이블로 구성할 수 있음
보통 테이블마다 필요한 정보만을 가지고 있기 때문에 join이 필요.
*엑셀에서 vlookup과 같은 기능이라고 함.


join에는 inner join과 left join이 있다.


left join

그림으로 그려보면 이와같다.

left join을 하게 되면, 어떤 데이터는 비어있는 필드가 존재할 수 있다.
예를들어 user테이블과 point테이블을  user id 기준으로 조인했을 때,
어떤 user id는 회원이지만 아직 수강 등록을 하지 않아 포인트를 획득하지 않은 상태일 수 있다.

비어있는 필드, 즉 null값이 많이 보인다.

 


 

inner join

inner join은 교집합과 같다.

 
user id 기준으로 join을 하면, 두 테이블에 모두 존재하는 user id 데이터만을 가져온다.
 

null값이 없다.

 


alias(별칭)

join에서는 alias(별칭)의 사용이 중요한데, 어느 테이블에 있는 필드명인지를 나타내줄 때 간단하게 쓰기 위함이다.


select * from checkins c
inner join users u
on c.user_id = u.user_id;

위의 쿼리문 해석 🤓
checkins 테이블을 c라고 지칭하겠다.
users테이블은 u라고 지칭하겠다.
c 와 u를 user id 기준으로해서 이너 조인해서 가져와라(두 테이블에 모두 있는 user id를 기준으로 모든 데이터를 가져와라)
 


예제 학습

 
Q) 7월10일 ~ 7월19일에 가입한 고객 중,
     포인트를 가진 고객의 숫자, 그리고 전체 숫자, 그리고 비율 확인하기
 
A)
1. user id 기준으로 left join
2. user table에서 created_at(가입시점)이 7월10일에서 20일 "사이"의 조건으로 거르기
3. 포인트유저 아이디 카운트(null값은 빼고 세어줌), 전체 카운트, 포인트유저카운트 나누기 전체 카운트 = 비율 불러오기
 
 

쿼리문과 결과는 이미지로 캡처하였다.

 
 


 

Union

 

동일한 구성의 필드를 가지고 있는 경우 테이블을 합칠 수 있다.
예를 들어, 7월의 데이터와 8월을 데이터를 각각 불러와서 합칠 수 있다.
 

 
 

3주차 복습완료


loading