[SQL] 코호트 분석으로 시간에 따른 유저 잔존율 계산하기

Unit·2025년 11월 2일

SQL

목록 보기
45/59

일일 활성 유저(DAU)나 구매 건수만으로는 서비스의 ‘건강도’를 제대로 판단하기 어렵습니다.
숫자는 늘어날 수 있지만, 새로운 유저만 계속 들어오고 기존 유저가 빠르게 이탈하고 있을 수도 있죠.

이럴 때 유용한 방법이 코호트(Cohort) 분석입니다.
사용자를 ‘시간의 흐름’에 따라 그룹화하고, 이후 행동 변화를 살펴보는 방식이에요.
이 분석을 통해 단순히 “얼마나 많은가”가 아니라, “얼마나 남아 있는가”를 볼 수 있습니다.


❓코호트 분석이란?

코호트 분석은 특정 시점에 함께 유입된 사용자 집단(cohort) 을 기준으로
시간이 지날수록 얼마나 활동이 이어지는지를 추적하는 방법입니다.
• 가입월별 코호트 : 각 월 가입자가 이후 몇 달 동안 활동을 유지했는가
• 첫 구매월별 코호트 : 첫 구매 이후 재구매가 얼마나 이어졌는가
• 앱 설치일 기준 코호트 : 설치 후 N일째에도 남아 있는 사용자 비율


📄 데이터 구조

아래와 같은 사용자 활동 로그가 있다고 가정해봅시다.

user_idsignup_dateactivity_date
10012025-01-102025-01-15
10012025-01-102025-02-03
10022025-02-022025-02-04
10022025-02-022025-03-01
10032025-03-152025-03-16

🎯 분석 목표

• 가입월(cohort_month)을 기준으로 유저를 묶고,
• 이후 월(active_month)마다 얼마나 잔존(retention) 하고 있는지 확인하기


🖥️ 코호트 분석 SQL 예시 (PostgreSQL 기준)

WITH base AS (
    SELECT
          user_id
        , DATE_TRUNC('month', signup_date) AS cohort_month
        , DATE_TRUNC('month', activity_date) AS active_month
    FROM user_activity
)
, retention AS (
    SELECT
          cohort_month
        , active_month
        , COUNT(DISTINCT user_id) AS active_users
    FROM base
    GROUP BY cohort_month
           , active_month
)
SELECT
      cohort_month
    , active_month
    , COUNT(DISTINCT CASE WHEN cohort_month = active_month THEN user_id END)
        OVER (PARTITION BY cohort_month) AS cohort_size
    , active_users
    , ROUND(active_users * 100.0 /
            NULLIF(
              COUNT(DISTINCT CASE WHEN cohort_month = active_month THEN user_id END)
              OVER (PARTITION BY cohort_month), 0
            ), 1
          ) AS retention_rate
FROM retention
ORDER BY cohort_month
       , active_month;

👁️ 결과 예시

cohort_monthactive_monthcohort_sizeactive_usersretention_rate
2025-012025-01120120100.0
2025-012025-021208066.7
2025-012025-031206050.0
2025-022025-02150150100.0
2025-022025-0315011073.3

🧐 실무에서 이렇게 활용할 수 있어요

• 코호트별 리텐션을 비교하면 유입 품질과 유저 경험 개선 여부를 확인할 수 있습니다.
• 특정 달의 리텐션이 급격히 낮다면, 온보딩 과정, 프로모션 효과, 또는 UI 변경 시점을 함께 검토해볼 수 있습니다.
• 이 방식은 단순 방문뿐 아니라 구매, 재결제, 콘텐츠 이용 지속도 분석에도 동일하게 적용 가능합니다.


정리

✔️ 코호트 분석은 “시간 기준으로 사용자 행동 변화를 추적하는 방법”입니다.
✔️ 각 그룹이 시간이 지나며 어떻게 변하는지를 보여줍니다.

profile
협업, 유지보수, 최적화를 고려한 데이터 실무 팁을 정리합니다.

0개의 댓글