상세 컨텐츠

본문 제목

RFM

그로스 해킹

by 관재탑 2022. 7. 26. 17:56

본문

RFM이란?

CRM(Customer Relationship Management)의 기법 중 하나인 RFM에 대해 소개해 보겠습니다.

개념은 간단합니다. 고객을 3가지 분류를 기준으로 나누는데요

  • Recency : 얼마나 최근에 구매했는가?
  • Frequency : 얼마나 자주 구매했는가?
  • Monetary : 얼마나 많이 구매했는가?

위의  3가지를 기준으로 고객을 나누에 고객별로 다르게 접근 하는 방식입니다. 

자세한 설명은 아래 링크에 있으니 궁금하신 분은 참고하시길 바랍니다.

 

https://www.datarian.io/blog/what-is-rfm

 

RFM 분석이란 무엇일까요

안녕하세요! 데이터 분석가 이보민입니다.

www.datarian.io

 

 

CASE와 IF을 활용한 RFM분석

Recency 컬럼 생성후 last_order_date를 기준으로 구매일이 2020-11-01 안에 있으면 고객에게 Recency 점수를 1점을 준다.

SELECT customer_id, 
CASE WHEN last_order_date > "2020-11-01" THEN 1 ELSE 0 END AS Recency,
last_order_date
FROM customer_stats

 

Frequency 컬럼 생성 후 cnt_orders를 기준으로 구매횟수가 5회 이상인 고객에게 Frequency 점수를 1점을 준다.

IF문 사용법 : IF(조건, 참일 때 값, 거짓일 때 값)

SELECT customer_id,
IF(cnt_orders >= 5, 1, 0) AS Frequency,
cnt_orders
FROM customer_stats

 

구매일이 2020-11-01 이후인 고객과 아닌 고객의 수를 구합니다.

SELECT CASE WHEN last_order_date >= '2020-11-01' THEN 1 ELSE 0 END AS recency,
COUNT(customer_id)
FROM customer_stats
GROUP BY recency

 

recency와 frequency를 기준으고 고객을 나누어 해당 그룹에 속하는 고객의 수를 구합니다.

SELECT IF(last_order_date >= '2020-11-01', 1, 0) AS recency, 
       IF(cnt_orders >= 5, 1, 0) AS frequency,
       COUNT(*) AS customers
FROM customer_stats
GROUP BY frequency, recency
ORDER BY recency DESC, frequency DESC

 

 

테이블 피봇

category, region별 주문량을 구했다.

COUNT(DISTINCT ~)로 중복되는 주문은 제외했다.

SELECT category, region, COUNT(DISTINCT order_id)
FROM records
GROUP BY category, region

 

order_id 컬럼과 카테고리 값이 furniture인 경우의 order_id 컬럼을 뽑는 쿼리를 작성했다.

SELECT order_id,
IF(category = 'Furniture', order_id, null) AS furniture_order_id
FROM records

 

전체 주문수와 카테고리값이 furniture인 경우의 주문수를 세는 쿼리를 작성

COUNT(DISTINCT ~)로 CASE문을 감싸줘야 된다.

SELECT COUNT(DISTINCT order_id) AS cnt_order,
       COUNT(DISTINCT CASE WHEN category = 'Furniture' THEN order_id END) AS furniture_cnt_orders 
FROM records

 

region별 전체 주문수와, 카테고리 값이 ‘Furniture’인 주문수를 계산했다.

SELECT region,
       COUNT(DISTINCT order_id) AS cnt_order, 
       COUNT(DISTINCT CASE WHEN category = 'Furniture' THEN order_id END) AS furniture_cnt_order
FROM records
GROUP BY region

 

'그로스 해킹' 카테고리의 다른 글

ARPPU, ARPU, ARPA  (0) 2022.11.06
고객 유지 전략  (0) 2022.11.06
마진율  (0) 2022.11.06
Churn rate  (2) 2022.11.06
AARRR, 매출분석  (0) 2022.07.28

관련글 더보기

댓글 영역