feat. 테이블 관계 확인 및 JOIN 활용하여 상위 상품 매출 확인
안녕하세요 브래드입니다.
오늘은 SQL 입문 세 번째 시간으로 각각의 테이블 관계 확인 및 JOIN을 활용하여 상위 상품 매출을 확인해보는 시간을 가져볼게요.
일반적으로 주문 데이터의 행 수는 굉장히 많습니다.
따라서, 만약 어떠한 Item의 이름이 변경된다고 한다면 과거 데이터 및 모든 데이터의 이름을 변경하고 다시 데이터를 넣어주어야 하는 상황이 발생합니다.
이에 Item 이름과 같은 가변적인 데이터는 주문 데이터에 넣지 않고 따로 Item 테이블을 생성하여 데이터를 수집 및 저장합니다.
또한, 카테고리도 변경될 확률이 존재하므로 Item 테이블처럼 따로 테이블을 생성하여 데이터를 수집 및 저장하는 것이 일반적입니다.
일반적인 주문테이블의 칼럼은 다음과 같이 구성되어 있습니다.
주문테이블에는 이러한 수치 값들이 들어가 있으며, 계산하는 공식 및 데이터는 기업마다 상이할 수 있습니다.
주문 테이블에는 수치 값들만 존재하므로, 만약 아이템 이름이나 성별 등의 데이터를 함께 확인하고 싶다면 해당 값들이 있는 테이블을 주문 테이블과 조인하여 값을 확인할 수 있습니다.
DBeaver에서는 각각의 테이블을 넣어준 후, ER 다이어그램을 통해 다음과 같이 구조화해볼 수 있습니다.
맵핑을 하고자 하는 컬럼을 선택하여 드래그해주면 다음과 같이 구조화되는 것을 확인할 수 있습니다.
예시에서는 Online_order의 userid와 user_info 테이블의 userid를 맵핑하였고, Online_order의 itemid와 item 테이블의 id와 맵핑, item 테이블의 id와 category 테이블의 id와 맵핑하였습니다.
위 이미지는 각각의 itemid에 대한 합계 매출액을 구한 모습입니다.
itemid 값만을 구했기 때문에 어떠한 상품명인지가 직관적으로 맵핑하기 어렵습니다. 따라서 JOIN을 통해 ITEM name을 불러오는 작업이 필요합니다.
JOIN을 통해 다음과 같이 Item name까지 구해줄 수 있습니다.
FROM 절 다음에 JOIN을 입력해주고, 불러올 테이블을 입력 후 ON을 작성해줍니다. 그리고 현재 테이블 및 연결해줄 칼럼과 연결해줄 테이블 및 칼럼을 입력하여 = 기호로 이어주면 JOIN 구문이 완성됩니다.
Online_order 뒤에는 oo가, item 뒤에는 i가 존재하는데 이는 줄임말이므로 입력해줄 때 간편하게 사용할 수 있습니다. 단, 줄임말을 사용할 시에는 특정한 절에만 사용하는 것이 아닌 모든 절에 공통적으로 사용해야 합니다.
JOIN 구문의 요약은 다음과 같습니다.
JOIN (불러올 테이블) ON (현재 테이블).칼럼 = (불러올 테이블).칼럼
이번엔 Item 테이블과 함께 category 테이블을 함께 조인하여 카테고리별 아이템 상위 매출을 확인한 모습입니다.
JOIN에 또 JOIN이 가능하니 원하는 값을 확인할 때 JOIN을 통해 유용하게 불러올 수 있습니다.
User 테이블을 조인하여 성/연령별 매출을 구한 모습입니다.
해당 문장을 통해 어떠한 연령층에서, 그리고 어떠한 성별에서 매출이 크게 발생하는지 등 확인이 가능합니다.
지금까지 SQL 학습 세 번째 시간으로 테이블 관계를 확인하고, JOIN을 활용하여 상위 상품 매출을 확인하는 작업을 진행해보았습니다.
필요한 정보가 각기 다른 테이블에 분산 저장되어 있을 때, JOIN을 활용하여 하나의 테이블에 데이터를 가져와 우리가 원하는 데이터를 확인할 수 있었습니다.
다음 시간에도 이어서 JOIN 구문을 활용해보는 시간을 가져볼게요.
브래드였습니다. 감사합니다.