※ PostgreSQL 프로그램과 Dbeaver 툴로 연습한 기록
→ 실행하면서 익혀보자!
2021년 6월 1일 하루동안의 주문 (자체 연습 데이터)
1. 데이터 탐색
gmv_trend : 온라인 쇼핑몰거래액 테이블
online_order : 주문 테이블
item : 상품 테이블
category : 카테고리 테이블
user_info : 유저 테이블
2. Top 상품의 매출 확인
1) 상품별 매출액 집계 후, 매출액 높은 순으로 정렬하기
select itemid, sum(gmv) as gmv
from online_order oo
group by 1
online_order oo → online_order as oo와 같다.
따라서 oo : online_order
2) 상품이름을 상품ID와 나란히 놓아서 한눈에 상품별 매출액을 확인할 수 있도록 하자.
select item_name, sum(gmv) as gmv
from online_order oo
join item i on oo.itemid = i.id
group by 1
order by 2 desc
→ item테이블을 'i'로 명명하고, item테이블의 'id'컬럼과 online_order테이블의 'itemid'를 Join
→ 여기서 join은 (inner) join과 같다. (교집합)
3) 카테고리별 매출액은 어떻게 될까? (Join 테이블에 Join을 한번 더)
select c.cate1, c.cate2, c.cate3, sum(gmv) as gmv
from online_order oo
join item i on oo.itemid = i.id
join category c on i.category_id = c.id
group by 1,2,3
order by 4 desc;
→ join테이블에 join을 한번 더!
4) 성/연령별 매출액은 어떻게 될까?
select gender, age_band, sum(gmv) as gmv
from online_order oo
join user_info ui on oo.userid = ui.userid
group by 1,2
order by 1,2;
→ online_order의 userid가 null값인 경우가 있으면, 어떻게 조인이 될 것인가? -> 이론수업때*
5) 만약 두개의 테이블에 컬럼명이 같다면(userid), 어떻게 써주어야하나?
select user_info.userid
from online_order oo
join user_info ui on oo.userid = ui.userid
select oo.userid
from online_order oo
join user_info ui on oo.userid = ui.userid
→ select구문에 테이블명.컬럼명을 정확히 사용해주어야 한다.
3. Top 상품의 매출 확인
1) 남성이 구매하는 아이템은 어떤 것이 있을까?
select i.item_name, sum(gmv) as gmv
from online_order oo
join user_info ui on oo.userid = ui.userid
join item i on oo.itemid = i.id
where gender = 'M'
group by 1
order by 2 desc;
→ ★ select > from > join > where > group by > order by 순서 명확히!!
※ Join의 유형
select ui.gender, ui.age_band, sum(gmv) as gmv
from online_order oo
join user_info ui on oo.userid = ui.userid
group by 1,2
order by 1,2;

→ 위에서 설명했듯, 그냥 join만 쓰는 것은 inner join과 같다. 이때 누락되는 값이 생길 수 있다.
select ui.gender, ui.age_band, sum(gmv) as gmv
from online_order oo
left join user_info ui on oo.userid = ui.userid
group by 1,2
order by 1,2;

→ left join을 사용하여 얻은결과를 보면, 누락되었던 값이 null로 표기되는 것을 볼 수 있다.
join의 대한 개념은 다음 포스트에서 다룬다.
'SQL' 카테고리의 다른 글
SQL 실습 ③ 데이터 가공하기 (0) | 2023.03.07 |
---|---|
SQL Join의 유형 / 주의사항 (0) | 2023.03.02 |
SQL 주의사항 (0) | 2023.02.28 |
SQL 기본 문법 (0) | 2023.02.28 |
SQL 실습 ① 거래액 데이터 분석 (0) | 2023.02.28 |