Retain User 분류 기준(Weekly / Montly)을 결정하기 위해 사용자의 월별 평균 접속 일수를 먼저 파악한다.
쿼리
WITH base AS (
SELECT
user_id,
DATE_TRUNC(event_date, MONTH) AS event_month,
COUNT(DISTINCT event_date) AS cnt
FROM advanced.app_logs
WHERE
user_id IS NOT NULL
GROUP BY user_id, event_month
)
SELECT
DISTINCT event_month,
ROUND(AVG(cnt), 2) AS avg_days_per_user
FROM base
GROUP BY event_month
ORDER BY event_month
쿼리 결과
| event_month | avg_days_per_user |
|---|---|
| 2022. 8. 1 | 1.06 |
| 2022. 9. 1 | 1.11 |
| 2022. 10. 1 | 1.2 |
| 2022. 11. 1 | 1.2 |
| 2022. 12. 1 | 1.21 |
| 2023. 1. 1 | 1.12 |
사용자의 월 평균 접속 일수가 1~1.2회 수준으로, 주 단위보다 월 단위 접속 패턴이 더 자연스럽다고 판단하여 Retain User를 월 단위 접속 기준으로 정의한다.