OkBublewrap

2025-01-16 TIL (마케팅 MMM 모델링, QCC 리뷰) 본문

Today I Learning

2025-01-16 TIL (마케팅 MMM 모델링, QCC 리뷰)

옥뽁뽁 2025. 1. 16. 20:26

아티클 # 22

 

마케팅 믹스 모델링 MMM

MMM의 정의, 역사, 특징, 단계, 장점과 한계까지 | 이전부터 중요했고, 최근에 다시 중요성이 부각되고 있는 마케팅 프레임이 있습니다. "Marketing Mix Modeling" 입니다. 마케팅 믹스 모델링이란 사용

brunch.co.kr

 

1. 아티클 주요 내용 요약

  • 핵심 주제: 마케팅 프레임 Marketing Mix Modeling
  • 주요 내용:
    • 마케팅 기본 4가지 요소 Product, Price, Place, Promotion 별 성공을 거두었는지 파악
    • 마케팅 비용, 매출을 인과관계로 보고 회귀분석을 통해 두 변인 간 상관성을 밝혀내는 기법
    • 어트리뷰션 기법은 사용자 개인 정보 보호를 위한 앱 추정 투명성 정책이 도입되면서 데이터 수집이 매우 어려워지면서 한계를 맞음
    • MMM - Collect - Model - Analyze - Optimize 순으로 진행
    • 장점 : 성과 예측이 가능하다. 정량적으로 설명 가능
    • 단점 : 과거 비즈니스 결과에 의존하여 미래를 예측하는 것이기 때문에 최근에 발생한 변화나 비즈니스의 요인을 반영한 애자일한 의사결정을 내리기 어렵다.

 

2. 인사이트 및 배운 점

  • 배운 점 : 마케팅 분야에서 회귀 분석을 어떻게 활용하는지 
  • 활용 방안 : 다음 프로젝트나 마케팅 관련 광고 매출에 대해서 진행해보면 적용해볼만 한 것 같다.

 

 


 

QCC 4회차

 

1번 문제 

지역별로 매출이 가장 높은 매장의 매출을 조회하는 SQL 문을 작성해주세요.

단, 해당 지역에 매장이 두 개 이상인 경우만 결과에 포함해주세요.

결과는 지역 이름을 기준으로 오름차순으로 정렬해주세요.

 

1. 지역별 매출이 가장 높은 매장의 매출

2. 해당 지역 매장이 두 개 이상인 경우

3. 지역 이름 오름차순

 

-- 1. 해당 지역 매장이 두개 이상인 경우의 REGION_NAME 가져오기
SELECT REGION_NAME
FROM stores
GROUP BY REGION_NAME
HAVING count(*) > 1
-- 2. REGION_NAME의 매출이 높은 값 가져오기
SELECT REGION_NAME, max(SALES) AS highest_sales
FROM stores
WHERE REGION_NAME IN 
(
	SELECT REGION_NAME
	FROM stores
	GROUP BY REGION_NAME
	HAVING count(*) > 1
)
GROUP BY REGION_NAME
ORDER BY REGION_NAME asc -- 3. 지역 이름 오름차순 정렬

 

 

2번 문제

최근 특정 사용자들이 결제를 하지 않고 상품을 주문하거나, 결제를 하지 않은 시점에 이미 상품을 주문하는 버그가 발견되었습니다. 해당 버그를 악용한 사용자를 파악하기 위해 SQL 문을 작성해주세요.

다음 조건에 해당되는 사용자 수를 출력해주세요 

1. 결제를 하지 않고 상품을 주문한 사용자

2. 첫 번째 결제일 보다 이전에 상품을 주문한 사용자

 

<payments> 테이블은 사용자의 결제 정보를 포함합니다.

컬럼명 타입 설명
ID INT 결제 ID (PK)
USER_ID VARCAHR 사용자 ID
AMOUNT INT 결제 금액
PAY_DATE DATETIME 결제 날짜
PAYMENT_TYPE INT 결제 유형 (0 : 현금, 1 : 카드)

 

<order> 테이블은 사용자의 상품 배송 정보를 포함합니다.

컬럼명 타입 설명
ID INT 주문 ID (PK)
USER_ID VARCHAR 사용자 ID
ORDER_DATE DATETIME 주문 날짜
ITEM VARCHAR 주문한 상품명

 

출력값 예시

<payments> 

ID USER_ID AMOUNT PAY_DATE PAYMENT_TYPE
1 user1 3000 2023-01-23 10:00:00 0
2 user3 5000 2023-01-23 14:00:00 1
3 user5 7000 2023-02-23 12:00:00 0

 

<orders>

ID USER_ID ORDER_DATE ITEM
1 user1 2023-02-23 09:30:00 Laptop
2 user2 2023-01-23 15:45:00 Smartphone
3 user4 2023-01-23 17:20:00 Headphones
4 user5 2023-01-23 08:00:00 Monitor

 

- user1은 결제 후 상품을 주문했으므로 버그와 무관

- user2은 결제를 하지 않고 상품을 주문 -> 버그 악용

- user4은 결제를 하지 않고 상품을 주문 -> 버그 악용

- user5은 첫 번째 결제일 이전에 상품을 주문 -> 버그 악용

 

[결과]

cnt : 3

 

풀이

-- 1. 각 유저 첫번째 결제일 구하기
select user_id, min(pay_date) as min_pay_date
from payments
group by user_id
-- orders, payments left join
WITH min_payment AS (
    SELECT USER_ID, MIN(PAY_DATE) AS min_pay_date
    FROM payments
    GROUP BY USER_ID
)
SELECT count(DISTINCT o.USER_ID) AS cnt
FROM orders o
LEFT JOIN min_payment mp ON o.USER_ID = mp.USER_ID
WHERE o.ORDER_DATE < mp.min_pay_date OR mp.USER_ID IS NULL; 
-- 최초 결제일 전 보다 주문을 빨리한 경우와
-- 결제하지 않았는데 주문이 있는 경우
-- 고유 user_id 추출

 

 

3번 문제

고객이 특정 상품 X를 구매했을 때 상품 Y도 함께 구매할 확률을 분석하고자 합니다.

이를 위해, 쇼핑 카트 데이터에서 서로 다른 두 제품 X와 Y가 같은 주문(CART_ID)에 포함된 주문수를 확인하려고 합니다.

  • 제품 X와 Y가 같은 주문에 포함된 경우를 계산합니다.
  • 두 제품은 서로 다른 이름이어야 하며, 한 쌍의 경우(예: Coffee와 Sausages)는 다른 순서(예: Sausages와 Coffee)로도 포함됩니다.
  • 결과는 각 제품 쌍과 해당 제품이 함께 포함된 주문 수를 반환해야 합니다.
  • 제품 이름 X와 Y를 기준으로 알파벳 순으로 오름차순 정렬합니다.

1. 모든 경우의 수 구하기

2. 같은 cart_id 일것

3. 제품 X, Y가 다른 이름

4. 제품 X, Y 기준으로 오름차순

 

-- 1. 모든 경우의 수 구하기
select c1.name as name_x, c2.name as name_y
from cart_products c1
join cart_products c2
where c1.cart_id = c2.cart_id -- 2. 해당 카트 장바구니 안에서의 경우의수 필터링
and c1.name <> c2.name -- 3. 같은 제품 이름이 아닌 것
-- 제품 쌍 갯수 세기
SELECT name_x, name_y, count(*) AS orders
FROM (
	SELECT c1.name AS name_x, c2.name AS name_y
	FROM cart_products c1 
	JOIN cart_products c2 
	WHERE c1.cart_id = c2.cart_id
	AND c1.name <> c2.name
) a
GROUP BY name_x, name_y
ORDER BY name_x ASC, name_y ASC; -- 오름차순 정렬

 

 

회고

3번 문제 : c1.name <> c2.name을 안넣어줘서 틀림..

2번 문제 읽다가 시간을 너무 소비한 것 같다. 문제 이해 안가면 다른 문제 부터 풀어야겠다.

 

'Today I Learning' 카테고리의 다른 글

2025-01-17 TIL (일기)  (3) 2025.01.17
WIL-8주차  (0) 2025.01.17
2025-01-15 TIL (A/B Test)  (0) 2025.01.15
2025-01-14 TIL (A/B Test)  (0) 2025.01.14
2025-01-13 TIL (프로젝트 개요 작성법)  (0) 2025.01.13