서비스 성장 분석 방법론
ARPU = 매출 / 전체 유저 수
ARPPU = 매출 / 결제 유저 수
당연히 ARPU < ARPPU이다!!
따라서 매출은 아래와 같이 계산할 수 있다.
매출 = 결제 유저 수 X ARPPU
매출 = 유저 수 X 결제자 비율 X ARPPU
📍 회사의 “전체 매출이 증가”하고 있는 상황이라면 여러가지 시나리오가 있을 수 있다.
위에 시나리오는 사후 분석이었지만, 매출 증대를 위한 전략을 짜는데에도 위와 같은 분석 방법론을 똑같이 적용할 수 있습니다.
데이터셋: Brazilian E-Commerce Public Dataset by Olist
✏️2017년 5월 1일부터 2017년 11월 19일까지 이 쇼핑몰의 일일 매출액
select date(orders.order_purchase_timestamp) dt,
round(sum(payments.payment_value),2) revenu_daily
from olist_orders_dataset as orders
inner join olist_order_payments_dataset as payments on orders.order_id = payments.order_id
where orders.order_purchase_timestamp between '2017-05-01 00:00:00' and '2017-11-19 23:59:59'
group by 1
✏️2017년 5월 1일부터 2017년 11월 19일까지 이 쇼핑몰의 일별 결제 유저(PU; Paying User)수, 매출액, ARPPU(Average Revenue Per Paying User)
select date(orders.order_purchase_timestamp) dt,
count(distinct orders.customer_id) as PU,
round(sum(payments.payment_value),2) as 매출액,
round(sum(payments.payment_value) / count(distinct orders.customer_id),2) as APRRU
from olist_orders_dataset as orders
inner join olist_order_payments_dataset as payments on orders.order_id = payments.order_id
where orders.order_purchase_timestamp between '2017-05-01 00:00:00' and '2017-11-19 23:59:59'
group by dt
분석 결론
👉 1과 2 중 하나이므로 이에 대한 추가분석이 필요하다.
👩🏻💻 “매출이 오르고 있습니다. 이유는 결제 유저가 늘었기 때문입니다”
🤔 ”그러면 앞으로 매출을 더 늘리려면 어떻게 해야합니까?”
고객 세분화 분석이란, 전체 유저를 여러 그룹으로 나누어 각 그룹의 특성을 보는 것을 말한다. 즉 좀더 추가적으로 보는 분석이다.
고객 세분화를 할 수 있는 다양한 기준들👇
✏️ 2017년 매출 Top 3 지역이었던 ‘SP’, ‘RJ’, ‘MG’ 주 각각의 일일 매출액과 일일 전체 매출액에서 차지하는 비중을 계산해주세요
select date(orders.order_purchase_timestamp) as dt,
round(sum(if (customer_state="SP", payments.payment_value,"")),2) as SP,
ROUND((sum(if (customer_state="SP", payments.payment_value,"")) / sum(payment_value))*100,2) as SP_total,
round(sum(if (customer_state="RJ", payments.payment_value,"")),2) as RJ,
ROUND((sum(if (customer_state="RJ", payments.payment_value,"")) / sum(payment_value))*100,2) as RJ_total,
round(sum(if (customer_state="MG", payments.payment_value,"")),2) as MG,
ROUND((sum(if (customer_state="MG", payments.payment_value,"")) / sum(payment_value))*100,2) as MG_total
from olist_orders_dataset as orders
inner join olist_customers_dataset as customers on orders.customer_id = customers.customer_id
inner join olist_order_payments_dataset as payments on orders.order_id = payments.order_id
where orders.order_purchase_timestamp between '2017-05-01 00:00:00' and '2017-11-19 23:59:59'
group by dt
order by dt
👉그러면은 매출에 영향을 주는 원인은 주가 아님을 알 수 있다! 다른 원인을 찾아볼 필요가 있다!
[멋사 SQL 3day] Join, Union/Union all (0) | 2022.11.22 |
---|---|
[멋사 SQL 2day] RFM Segmentation, 테이블 피봇 (0) | 2022.10.04 |
[멋사 SQL 2day] 집계함수, group by, having, case when 조건문 (0) | 2022.10.04 |
[멋사 SQL 1day] select, where, order by, 연산자 (0) | 2022.09.29 |