사용자 유지율(Retention rate) 한번에 계산하기

Full name
11 Jan 2022
5 min read

아웃코드 자동화에서 조회화면을 쉽게 만들 수 있는데요, Retention rate 조회화면을 만들어보겠습니다.

"Retention rate"는 비즈니스나 서비스가 특정 기간 동안 얼마나 많은 고객이나 사용자를 유지하는지를 측정하는 지표입니다. Retention rate를 계산하려면 일정 기간 동안의 고객 또는 사용자 접속 기록 데이터가 필요합니다. 유지율(Retention rate)을 계산하는 방법은 간단하게 다음과 같이 요약될 수 있습니다:

  1. 선택한 기간 정의: 먼저, 어떤 기간 동안의 유지율을 계산할 것인지 정의해야 합니다. 예를 들어, 주간, 월간 등을 선택할 수 있습니다.
  2. 시작 시점 설정: 선택한 기간 내에서 고객이나 사용자가 서비스를 시작한 날짜를 설정합니다. 이를 "시작 시점"이라고 합니다. 이 날짜로부터 고객의 활동을 추적합니다.
  3. 유지된 고객 수 계산: 선택한 기간 내에서 시작 시점에서 우리 서비스에 접속한 고객의 수를 계산합니다.
  4. 재방문한 고객 수 계산: 시작 시점 이후에도 계속 서비스를 이용한 고객의 수를 계산합니다. 이 수치는 유지된 고객 중에서 재방문한 고객을 나타냅니다.
  5. 유지율 계산: 재방문한 고객 수를 유지된 고객 수로 나눈 후, 백분율로 표현하여 유지율을 계산합니다.

What is retention rate? A definition, guide & FAQ.
source: https://www.projectbi.net/blog/what-retention-rate-definition-guide

데이터베이스에 있는 일자가 포함된 사용자 접속 로그데이터와 사용자 고유 아이디(예를 들어 이메일주소)를 기반으로 산정할 때는 아래와 같은 주의 사항이 필요합니다.

  • 하루에 여러번 접속한 사용자도 중복카운팅이 되면 안됩니다.
  • 접속 로그가 JSON 형태로 저장되는 경우가 많습니다. 이 경우 접속날짜와 시간을 추출해야합니다.
  • 시작시점을 설정합니다. (예를 들어, 10월 1일부터 가입한 사용자의 유지율을 계산)
  • 유료와 무료 사용자, 구매전/구매 후 사용자의 유지율이 다른 경우가 많습니다. 이때는 구분하여 유지율을 2개로 구분합니다.

사용하는 데이터소스에 따라 쿼리가 다를 수 있지만 일반적인 MySQL 데이터베이스 쿼리 예시는 다음과 같습니다.

(아래 쿼리를 아웃코드 자동화앱에 복사 붙여넣기하여 수정해보세요!)

WITH user_access_info AS (
select JSON_UNQUOTE(JSON_EXTRACT(CUH.data, '$.email')) as user_email,
 DATE_FORMAT(CUH.created_date, '%Y-%m-%d') as access_date
from USER_HIST AS CUH
where JSON_UNQUOTE(JSON_EXTRACT(CUH.data, '$.email')) IN (
SELECT DISTINCT email AS email
FROM USER AS CU
WHERE deleted_date IS NULL
 
)
and CUH.created_date >= '2023-10-01'
group by 1,2

), retention_1 as (
 
 SELECT
 initial_access.access_date AS cohort_date,
 DATEDIFF(u.access_date, initial_access.access_date) AS day_number,
 COUNT(u.user_email) AS retained_users
 -- COUNT(u.user_email) / initial_users.total_users * 100 AS retention_percentage
FROM (
 SELECT
   user_email,
   MIN(access_date) AS access_date
 FROM user_access_info
 GROUP BY user_email
) AS initial_access
JOIN user_access_info AS u ON initial_access.user_email = u.user_email
JOIN (
 SELECT
   access_date,
   COUNT(DISTINCT user_email) AS total_users
 FROM user_access_info
 GROUP BY access_date
) AS initial_users ON initial_access.access_date = initial_users.access_date
GROUP BY cohort_date, day_number
ORDER BY cohort_date, day_number
 
), retention_basis as (
select cohort_date, max(retained_users) as total_users
from retention_1
group by 1
), retention_agg as (

select retention_1.cohort_date, retention_1.day_number,
 retention_basis.total_users, retention_1.retained_users,
 round(retention_1.retained_users/retention_basis.total_users*100,2) as retention_percentage
from retention_1
left join retention_basis on retention_1.cohort_date = retention_basis.cohort_date
 
 ), total_users_cnt as (

select sum(total_users) as total_users
from retention_basis
 
 )

select retention_agg.day_number, total_users_cnt.total_users,
 sum(retained_users) as retained_users,
round(sum(retained_users)/total_users_cnt.total_users*100 ,2) as avg_retention_percentage
 
from retention_agg, total_users_cnt
group by 1,2
order by 1 asc

Your might also like our other articles

운영업무와 밀접한 데이터 자동화
에어테이블과 구글시트, 데이터베이스 완벽연동 방법
비대면 바우처 3차 신청하시고, 아웃코드 할인을 받으세요!
아웃코드팀이 2022 데이터스타즈 (DATA-STARS)에 선정되었습니다!
우리가 데이터 자동화를 꼭 해야하는이유
우리의 매출을 폭발적으로 향상시키기 위해 필요한 것 (쿠팡처럼 개인화 메세지 제공하기)
새로운 비지니스에 데이터 자동화가 필요한 이유
가장 중요한 지표인 유지율(Retention rate)조회화면 만들기
노코드를 배우시고 싶은 분들을 위한 주요 포인트를 정리
API와 데이터베이스, 구글시트, 에어테이블, 노션으로 연동하기
마케팅 업무를 높은 가치를 만들어내는 전략적인 업무로 바꾸는 방법
구글시트와 알림톡을 연결하는 업무툴 만들기 (30개의 알림톡으로 최적화하기)
8월에 한국투자액셀러레이터에서 진행한 ‘[Outcode] Supercharging Productivity’ 세미나에 대한 내용을 담았습니다.
우리가 업무 중에 사용하는 데이터소스에 관한 통계
삶의 질을 높이는 자동화 아이디어들
아웃코드를 잘 사용하는 사람들의 공통점
가까운 미래의 우리의 일은 어떻게 바뀔 것인가에 대한 생각
전환율과 구매율을 높이는 데이터 자동화 활용하는 방법
아웃코드팀이 바라보는 노코드 기술과 시장의 발전방향
아웃코드를 이용하면, 성장 초기부터 데이터 기반의 자동화된 업무를 중심으로 스케일이 가능하며, 감이나 직관에 의한 운영이 아니라 정교하고 고객이 정확하게 원하는 모습으로 성장이 가능합니다.
사용자가 얼마나 자주 우리 서비스를 사용하고 있을까요?
카카오 알림톡, 친구톡을 자동화할 때 재피어와 아웃코드 비교
개발하지 않고, 완벽하게 개인화된 맞춤형 메세지를 보내는 방법
비대면바우처로 아웃코드 할인받아서 사용하기
아웃코드는 처음 사용하시는 분들이 자주 묻는 질문에 대해서 준비해봤어요.
직접 아웃코드 AutoML에 데이터를 넣고 데이터 분석을 시행해 보았습니다. 데이터는 Walmart Sales Forecast kaggle에서 가져왔으며 예시 1번처럼 매출 예측 모델을 생성했습니다. 아래 그림처럼 IsHoliday, Dept, Weekly_Sales, Temperature, Fuel_Price, CPI, Unemployment의 Column으로 구성되어 있으며 주간 매출인 Weekly_Sales를 예측합니다.
데이터 자동화 관점에서 재피어의 성능과 데이터에 대해서 분석해보았습니다.
이번 후속투자로 고객을 위한 기능 개발을 확대할 예정입니다.