3번째 과제는 SQL
실무사례로 풀어보는 SQL 쿼리작성인데요
복습입니다 복습
목표는 "뷰티 기업인 GlowCos의 리텐션 분석 "
Attitude는 "quick quick"
할 일 정리~
1. 현황 파악 및 마케팅 타겟 설정 : 기초진단
2. 마케팅 전략 제시 : 수익 최적화 및 고객 유지
[SQL 작성 순서]
SQL 실습을 하는데 항상 헷갈리는 부분이 작성순서여서 다시 한번 정리하고 들어갑니다

1. 현황 파악 및 마케팅 타겟 설정
■ 상황
- 역할 : 온라인 편집숍 'UK 스토어'의 데이터 분석가- 문제 : 현재 우리 회사는 글로벌 확장을 준비 중이며, 최근 늘어난 환불과 정체된 매출 문제를 해결해야 함.
- 목표 : 경영진이 당신에게 데이터를 통해 현황을 진단하고 해결책을 제시하라는 미션을 줬음
[기초 진단]
기초 진단 리스트에서 헷갈렸던 부분
[심화 진단]
심화 진단 리스트에서 헷갈렸던 부분
- 서브쿼리 사용
- 다중 서브쿼리 사용시 WITH 구문으로 사용하는 법














with 구문 - 해설 참고 - 서브쿼리 뽑을 때 편하고 쉬움

-- 14. 총 구매액이 60,000파운드 이상인 'VVIP 고객' 리스트를 만드세요.
-- 3개 테이블 조인 : customers - orders['customer_id']['order_id'] order_items
-- 출력할 컬럼 : customer_id, 고객별 전체 주문금액
-- 제외할 항목 : 환불한 경우 order_id not like "C%"
-- 1) 주문건별 구매액 조회할 수 있는 테이블 만들기 -- 서브쿼리로
-- 2) 고객별 주문건 집계해서 -> 6만파운드 이상 구매한 경우만 조회하기
SELECT
order_id,
SUM(price*quantity) as 주문건당_결제액 -- 쌍따옴표해서 띄어쓰기해도 되지만 나중에 오류
FROM order_items
WHERE order_id not like "C%"
GROUP BY 1
-- 1) 주문건별 구매액 조회할 수 있는 테이블 만들기 -- 서브쿼리로
-- 2) 고객별 주문건 집계해서 -> 6만파운드 이상 구매한 경우만 조회하기
SELECT
od.customer_id
, SUM(order_amount.주문건당_결제액) as 고객별_결제액
FROM orders as od
LEFT JOIN (SELECT
order_id,
SUM(price*quantity) as 주문건당_결제액 -- 쌍따옴표해서 띄어쓰기해도 되지만 나중에 오류
FROM order_items
WHERE order_id not like "C%"
GROUP BY 1) as order_amount
on od.order_id = order_amount.order_id
GROUP BY 1
HAVING 고객별_결제액 > 60000


- WITH 쓰면 별칭 먼저 작성해주기
-- WITH 이용해서 서브쿼리 정리하기
WITH
order_amount as (SELECT
order_id,
SUM(price*quantity) as 주문건당_결제액
FROM order_items
WHERE order_id not like "C%"
GROUP BY 1)
SELECT
od.customer_id
, SUM(order_amount.주문건당_결제액) as 고객별_결제액
FROM orders as od
LEFT JOIN order_amount
on od.order_id = order_amount.order_id
GROUP BY 1
HAVING 고객별_결제액 > 60000

- orders와 order_items 중에 order_items가 더 행이 많다.
- 두 테이블을 join하면 order_items만큼 행이 증가하기에 연산처리 속도가 더 오래걸리게 됨
- 이런 비효율적인 상황을 방지하려면, 바로 Inner join말고 Left join을 써서 연산을 수월하게 하는 것이 좋음
- ▶ 그대로 join넣고 연산하기 vs 서브쿼리 사용해서 연산하기
복잡해서 사망했습니다.
서브쿼리 2개
가장 안쪽에 있는 서브쿼리 맨 위쪽 with
아~with는
테이블 1개 만들고, 2번째 테이블 만들어서
그걸 두개를 groupby해서 뽑을거야라고 하면 with 구문 먼저 사용 가능

sql은 구해야하는 문제에 대해서 단계화하는 게 중요한 것 같다
뭐 부터 구하고, 그다음 서브쿼리로 사용해서 어떤걸로 그룹바이하고 해빙조건은 뭘 넣을건지 등등
quick quick은 무슨 내 숨이 컥컥
'Growth Marketing > Job Preparation' 카테고리의 다른 글
| 마케터 지망생의 데이터 분석 정복기 ②|Pandas로 뷰티 기업 리텐션 분석하기!💄 (1) | 2026.04.19 |
|---|---|
| 마케터 지망생의 데이터 분석 정복기 ①|Pandas로 이커머스 기업 퍼널분석 하기! 🚢 (0) | 2026.04.18 |
| 마케터 지망생의 Figma Site 정복기|LPO전략 설계부터 랜딩페이지 제작까지! (0) | 2026.03.24 |
| 마케터 지망생의 META Pixel 정복기|팝업 이미지 내 버튼 클릭 이벤트 설치하기 ! (0) | 2026.03.24 |
| 마케터 지망생의 GTM 정복기|팝업 이미지 띄우고 링크 연결까지! (0) | 2026.03.23 |