1번 문제(15분)

2번 문제(10분)

3번 문제(10분)


1. Weekly Retention을 구하는 쿼리를 바닥부터 스스로 작성해요

WITH base AS (
  SELECT
    DISTINCT
      DATE_TRUNC(event_date, WEEK(MONDAY)) AS event_week,
      user_pseudo_id
  FROM
    advanced.app_logs
  WHERE
      event_date BETWEEN "2022-08-01" AND "2022-11-03"
),
first_event AS (
  SELECT
    event_week,
    first_value(event_week) OVER(PARTITION BY user_pseudo_id ORDER BY event_week ASC) AS first_event_week,
    user_pseudo_id
  FROM
    base
),
first_week_diff AS (
  SELECT
    date_diff(event_week, first_event_week, WEEK) AS week_diff,
    user_pseudo_id
  FROM
    first_event
)
SELECT
  week_diff,
  COUNT(DISTINCT user_pseudo_id) AS cnt
FROM
  first_week_diff
GROUP BY
  week_diff
ORDER BY
  week_diff ASC

2. Retain user를 New + Current + Resurrected + Dormant user로 나누는 쿼리를 작성해보세요.

<aside> 💡

3. 주어진 데이터에서 어떤 사람들이 리텐션이 그나마 높을까요?

image.png