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주차 복습완료
'데이터 다루기' 카테고리의 다른 글
프로그래머스 SQL 코딩테스트 연습 (0) | 2023.05.25 |
---|---|
해커랭크 SQL 오류 / Weather Observation Station 17 (1) | 2023.04.18 |
스파르타 코딩클럽 SQL 4주차까지 완강 / 문법 정리 (0) | 2023.03.17 |
스파르타 코딩클럽 엑셀보다 쉬운 SQL 2주차 (0) | 2023.03.14 |
스파르타 코딩클럽 SQL 1주차 (0) | 2023.03.13 |