brunch

이제는 마케터 필수템, SQL(4)

feat JOIN 구문 마스터하기

by 브래드

안녕하세요, 브래드입니다.


오늘은 SQL 입문 네 번째 시간으로 지난번 학습했던 JOIN을 마스터하고,

카테고리별 및 상품별 매출 확인을 함께 공부해보겠습니다.



JOIN 활용

캡처.JPG Item 테이블 조인 후, 상품별 매출 합계 큰 순서대로 나열하기

상품별 매출 합계를 큰 순서대로 나열하기 위해 Item 테이블을 조인한 모습입니다.


Item 테이블을 i로 축약해서 사용할 수 있는데, i로 축약해서 사용한다면 모든 구문에서도 i로 사용하여 통일성을 유지해야 결괏값을 구할 수 있습니다.




333.JPG 카테고리 조인 후 나열하기

item 테이블에 이어서 카테고리 테이블을 조인한 후 카테고리 별로 매출 합계를 나열한 모습입니다.


ORDER BY 절에 1,2,3,4를 입력하여 대분류로 먼저 나열하고, 그리고 중분류, 소분류 별로 나열 후 마지막엔 매출 합계 별로 나열하는 것으로 구현한 모습입니다.




where.JPG JOIN 구문에 이어서 WHERE 구문 입력한 모습

JOIN 구문에 이어서 WHERE 구문을 추가하여 조건을 추가한 모습입니다.


일반적으로 FROM 다음에 JOIN이 온다고 생각하고, WHERE 절을 추가할 경우 JOIN 다음에 WHERE이 온다고 이해하면 됩니다.


예시에서는 cate1 항목들 중 블라우스만 보기 위하여 다음과 같이 입력했습니다. 조건을 추가하고 싶을 경우엔, 블라우스 뒤에 AND를 사용한 후 추가 조건을 입력할 수 있습니다.




having.JPG Having 구문 추가

GROUP BY 구문 다음으로 HAVING 구문을 추가하여 합계 금액 조건을 추가할 수 있습니다.


SUM(gmv) >= 5000000을 입력하여 필터링된 모습입니다.





JOIN 유형 알아보기

352.JPG NULL 값들이 존재하는 상황

Online_order 테이블에 있는 모든 값들을 조회했더니 userid에 빈칸이 있는 경우를 목격할 수 있었습니다.


이는 userid 중 NULL 값이 존재하는 것을 의미합니다. 현재와 같은 상황에서 Userid 테이블을 조인하여 값을 확인한다면 NULL 값을 제외하고 데이터를 확인할 수 있습니다.


만약 Userid가 NULL 값인 경우만을 보고 싶다면, 현재 구문에서 WHERE Userid is NULL을 입력하여 Userid의 값이 NULL인 경우만 확인할 수 있습니다.




777.JPG left JOIN 사용

일반적인 JOIN을 사용할 경우에는 NULL 값을 보여주지 않기 때문에 NULL 값을 확인할 수 없습니다. 즉, 그냥 JOIN을 할 경우에는 해당 행이 삭제된다고 이해할 수 있습니다.


따라서 LEFT JOIN을 사용하여야 위의 이미지와 같이 NULL 값 또한 확인이 가능합니다. 즉, LEFT JOIN을 사용하면 해당 행이 그대로 남습니다.


JOIN의 종류는 다음과 같이 크게 4가지로 나뉩니다.

1. Inner Join
- 두 개 테이블에 모두 존재하는 행만 남는다.(교집합)

2. Left Join
- 왼쪽 테이블을 기준으로 오른쪽 테이블을 붙이는 경우이다. (오른쪽 테이블에 조인되는 값이 없는 경우 Null로 표기된다)

3. Right Join
- Left Join과 반대이다.

4. Full Join
- 모든 값이 합쳐진다.


우리가 일반적으로 Join으로 입력하고 사용하는 Join은 Inner Join입니다. Inner 글자는 생략이 가능하므로 그냥 Join으로 사용하는 편입니다.


상황에 따라 Inner Join 및 Left Join을 사용하며, Null 값이 필요한 지에 따라서도 Join의 유형을 달리하여 사용할 수 있습니다.




ㅜㅜ.JPG left join 사용하여 Null 값이 존재하는 id 구하기

만약, id 혹은 item name 등이 Null 값인 경우를 찾기 위해서는 일반적인 Join이 아닌, 예시처럼 left join을 사용하여 Null을 구해줄 수 있습니다.


추가로, Category 테이블에 Item 테이블을 left Join 할 수도 있고 혹은 User 테이블에 Online_order 테이블을 left Join을 진행하는 등 기준이 되는 테이블은 언제든지 달라질 수 있습니다.





지금까지 SQL 학습 네 번째 시간으로 JOIN 구문을 마스터해보는 시간을 가져보았습니다.


JOIN의 다양한 활용을 함께 복습해보며, 필요한 데이터를 자유자재로 가져올 수 있도록 연습해보아요.


브래드였습니다. 감사합니다.

keyword
매거진의 이전글이제는 마케터 필수템, SQL(3)