<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>기록하는 분석가</title>
    <link>https://jshdata0794.tistory.com/</link>
    <description>데이터 분석가를 목표로 실무, 프로젝트, SQL, 루틴을 기록하는 공간입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 21 Jul 2026 17:55:46 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>조성호</managingEditor>
    <item>
      <title>[GA4 코호트 분석] Day9-8 코호트 리텐션 분석 (LTV 분석)</title>
      <link>https://jshdata0794.tistory.com/30</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &quot;어떤 코호트가 실제로 돈을 벌어주는가?&quot;&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;분석 목적&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;101&quot; data-start=&quot;86&quot; data-section-id=&quot;s8840m&quot;&gt;Cohort별 총 매출&lt;/li&gt;
&lt;li data-end=&quot;136&quot; data-start=&quot;102&quot; data-section-id=&quot;45it1n&quot;&gt;Cohort별 ARPU (Revenue per User)&lt;/li&gt;
&lt;li data-end=&quot;166&quot; data-start=&quot;137&quot; data-section-id=&quot;a9fmf2&quot;&gt;Cohort별 Purchase Frequency&lt;/li&gt;
&lt;li data-end=&quot;203&quot; data-start=&quot;167&quot; data-section-id=&quot;pwhf8p&quot;&gt;Cohort별 AOV (Average Order Value)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SQL&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. Cohort별 총 매출&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;274&quot; data-start=&quot;240&quot; data-section-id=&quot;1x5avl5&quot;&gt;어떤 주차에 유입된 유저들이 가장 많은 매출을 만들었는가?&lt;/li&gt;
&lt;li data-end=&quot;303&quot; data-start=&quot;275&quot; data-section-id=&quot;158mwpr&quot;&gt;리텐션이 높은 코호트가 실제로도 매출이 높은가?&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1780236339360&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Cohort별 총 매출 분석

WITH first_session AS (

  SELECT
    user_pseudo_id,

    -- 최초 방문 주차 = Cohort
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id

),

purchase_data AS (

  SELECT
    user_pseudo_id,

    DATE(TIMESTAMP_MICROS(event_timestamp)) AS purchase_date,

    -- 구매 매출
    ecommerce.purchase_revenue AS revenue

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name='purchase'
    AND ecommerce.purchase_revenue IS NOT NULL
)

SELECT

  f.cohort_week,

  ROUND(SUM(p.revenue),2) AS total_revenue,

  COUNT(*) AS purchase_events

FROM first_session f

JOIN purchase_data p
ON f.user_pseudo_id = p.user_pseudo_id

GROUP BY 1
ORDER BY 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2166&quot; data-origin-height=&quot;545&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cq3whB/dJMcabqSKVz/ogABhhfRemxau5c5z5gy70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cq3whB/dJMcabqSKVz/ogABhhfRemxau5c5z5gy70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cq3whB/dJMcabqSKVz/ogABhhfRemxau5c5z5gy70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcq3whB%2FdJMcabqSKVz%2FogABhhfRemxau5c5z5gy70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2166&quot; height=&quot;545&quot; data-origin-width=&quot;2166&quot; data-origin-height=&quot;545&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1005&quot; data-start=&quot;1000&quot; data-ke-size=&quot;size18&quot;&gt;핵심 코드&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;lisp&quot;&gt;&lt;code&gt;DATE_TRUNC(MIN(DATE(...)), WEEK)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1069&quot; data-start=&quot;1052&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 유저의 최초 방문 주차 추출&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;SUM(revenue)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1114&quot; data-start=&quot;1096&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; Cohort별 누적 매출 계산&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. ARPU (Revenue Per User)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1235&quot; data-start=&quot;1220&quot; data-section-id=&quot;1v87t5w&quot;&gt;코호트 규모 차이를 제거&lt;/li&gt;
&lt;li data-end=&quot;1257&quot; data-start=&quot;1236&quot; data-section-id=&quot;1yhgn0o&quot;&gt;유저 1명당 얼마를 벌어오는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1780236418570&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Cohort별 ARPU 분석

WITH first_session AS (

  SELECT
    user_pseudo_id,

    -- 최초 방문 주차
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name='session_start'
  GROUP BY user_pseudo_id

),

cohort_size AS (

  -- Cohort별 유저 수
  SELECT
    cohort_week,
    COUNT(*) AS users

  FROM first_session
  GROUP BY 1

),

cohort_revenue AS (

  -- Cohort별 총 매출
  SELECT

    f.cohort_week,

    SUM(ecommerce.purchase_revenue) AS revenue

  FROM first_session f

  JOIN `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*` e
    ON f.user_pseudo_id=e.user_pseudo_id

  WHERE event_name='purchase'
    AND ecommerce.purchase_revenue IS NOT NULL

  GROUP BY 1

)

SELECT

  r.cohort_week,

  ROUND(r.revenue,2) AS total_revenue,

  c.users,

  -- 유저당 평균 매출
  ROUND(r.revenue/c.users,2) AS arpu

FROM cohort_revenue r

JOIN cohort_size c
ON r.cohort_week=c.cohort_week

ORDER BY 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;547&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUopmY/dJMcaiXLkLk/w4mdngNH1nkK4PATXnILe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUopmY/dJMcaiXLkLk/w4mdngNH1nkK4PATXnILe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUopmY/dJMcaiXLkLk/w4mdngNH1nkK4PATXnILe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUopmY%2FdJMcaiXLkLk%2Fw4mdngNH1nkK4PATXnILe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2154&quot; height=&quot;547&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;547&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;2177&quot; data-start=&quot;2172&quot; data-ke-size=&quot;size18&quot;&gt;핵심 코드&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;ROUND(revenue / users, 2)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;2223&quot; data-start=&quot;2217&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; ARPU&lt;/p&gt;
&lt;p data-end=&quot;2241&quot; data-start=&quot;2225&quot; data-ke-size=&quot;size16&quot;&gt;Revenue Per User&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. Purchase Frequency&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2293&quot; data-start=&quot;2279&quot; data-section-id=&quot;1odkf7i&quot;&gt;한 번 사고 끝나는가?&lt;/li&gt;
&lt;li data-end=&quot;2305&quot; data-start=&quot;2294&quot; data-section-id=&quot;fiaugu&quot;&gt;반복 구매하는가?&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1780236430844&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Cohort별 구매 빈도 분석

WITH first_session AS (

  SELECT
    user_pseudo_id,

    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name='session_start'
  GROUP BY user_pseudo_id

),

purchase_count AS (

  SELECT

    f.cohort_week,

    -- 전체 구매 건수
    COUNT(*) AS purchases,

    -- 구매 유저 수
    COUNT(DISTINCT f.user_pseudo_id) AS purchasers

  FROM first_session f

  JOIN `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*` e
    ON f.user_pseudo_id=e.user_pseudo_id

  WHERE event_name='purchase'

  GROUP BY 1

)

SELECT

  cohort_week,

  purchases,

  purchasers,

  -- 구매 유저 1명당 평균 구매 횟수
  ROUND(
    purchases/purchasers,
    2
  ) AS purchase_frequency

FROM purchase_count

ORDER BY 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2150&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdtx3R/dJMcacDlj3z/BOW8uiZkeFK9DC1O3oIWM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdtx3R/dJMcacDlj3z/BOW8uiZkeFK9DC1O3oIWM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdtx3R/dJMcacDlj3z/BOW8uiZkeFK9DC1O3oIWM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdtx3R%2FdJMcacDlj3z%2FBOW8uiZkeFK9DC1O3oIWM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2150&quot; height=&quot;540&quot; data-origin-width=&quot;2150&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;3135&quot; data-start=&quot;3130&quot; data-ke-size=&quot;size18&quot;&gt;핵심 코드&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;COUNT(*) AS purchases&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3181&quot; data-start=&quot;3171&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 전체 구매 건수&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;COUNT(DISTINCT user_pseudo_id)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3238&quot; data-start=&quot;3226&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 실제 구매 유저 수&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;nginx&quot;&gt;&lt;code&gt;purchases / purchasers&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;3282&quot; data-start=&quot;3275&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 구매 빈도&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. AOV (Average Order Value)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3204&quot; data-start=&quot;3180&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3204&quot; data-start=&quot;3180&quot; data-section-id=&quot;qvanpw&quot;&gt;구매 빈도가 아니라 구매 금액 자체 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1780236447733&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Cohort별 평균 주문 금액(AOV)

WITH first_session AS (

  SELECT

    user_pseudo_id,

    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name='session_start'
  GROUP BY user_pseudo_id

)

SELECT

  f.cohort_week,

  -- 평균 주문 금액
  ROUND(
    AVG(ecommerce.purchase_revenue),
    2
  ) AS avg_order_value,

  ROUND(
    SUM(ecommerce.purchase_revenue),
    2
  ) AS total_revenue,

  COUNT(*) AS purchase_events

FROM first_session f

JOIN `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*` e
ON f.user_pseudo_id=e.user_pseudo_id

WHERE event_name='purchase'
  AND ecommerce.purchase_revenue IS NOT NULL

GROUP BY 1

ORDER BY 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2157&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdQZHB/dJMb99T6wlF/7UAOoiOD9QTmRmquHvJQsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdQZHB/dJMb99T6wlF/7UAOoiOD9QTmRmquHvJQsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdQZHB/dJMb99T6wlF/7UAOoiOD9QTmRmquHvJQsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdQZHB%2FdJMb99T6wlF%2F7UAOoiOD9QTmRmquHvJQsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2157&quot; height=&quot;550&quot; data-origin-width=&quot;2157&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;4094&quot; data-start=&quot;4089&quot; data-ke-size=&quot;size18&quot;&gt;핵심 코드&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;AVG(ecommerce.purchase_revenue)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4167&quot; data-start=&quot;4140&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; AOV (Average Order Value)&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;SUM(ecommerce.purchase_revenue)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4219&quot; data-start=&quot;4213&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 총 매출&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;stylus&quot;&gt;&lt;code&gt;COUNT(*)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;4249&quot; data-start=&quot;4242&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 구매 횟수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;해석&lt;/h3&gt;
&lt;h4 data-end=&quot;277&quot; data-start=&quot;260&quot; data-section-id=&quot;zfvmhh&quot; data-ke-size=&quot;size20&quot;&gt;1. Cohort별 총 매출&lt;/h4&gt;
&lt;p data-end=&quot;327&quot; data-start=&quot;321&quot; data-section-id=&quot;1hryr2v&quot; data-ke-size=&quot;size18&quot;&gt;KPI&lt;/p&gt;
&lt;p data-end=&quot;355&quot; data-start=&quot;329&quot; data-section-id=&quot;aapi2l&quot; data-ke-size=&quot;size16&quot;&gt;Highest Revenue Cohort&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;2020-12-06 Cohort&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;405&quot; data-start=&quot;388&quot; data-section-id=&quot;1pypq3i&quot; data-ke-size=&quot;size16&quot;&gt;Total Revenue&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;48,008&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;446&quot; data-start=&quot;427&quot; data-section-id=&quot;1x9sh2q&quot; data-ke-size=&quot;size16&quot;&gt;Purchase Events&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;686건&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;471&quot; data-start=&quot;466&quot; data-section-id=&quot;1m891o&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;508&quot; data-start=&quot;473&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;508&quot; data-start=&quot;473&quot; data-ke-size=&quot;size16&quot;&gt;12월 첫째 주에 유입된 유저들이 가장 높은 매출을 발생시켰다.&lt;/p&gt;
&lt;p data-end=&quot;572&quot; data-start=&quot;510&quot; data-ke-size=&quot;size16&quot;&gt;이는 단순히 유입 규모 때문일 수도 있지만, 해당 기간에 유입된 유저들의 구매 의도가 높았을 가능성도 존재한다.&lt;/p&gt;
&lt;p data-end=&quot;576&quot; data-start=&quot;574&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 유입량이 많은 코호트가 항상 가장 가치 있는 코호트는 아니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;635&quot; data-start=&quot;623&quot; data-section-id=&quot;130ztzp&quot; data-ke-size=&quot;size20&quot;&gt;2. ARPU 분석&lt;/h4&gt;
&lt;p data-end=&quot;676&quot; data-start=&quot;670&quot; data-section-id=&quot;1hryr2v&quot; data-ke-size=&quot;size18&quot;&gt;KPI&lt;/p&gt;
&lt;p data-end=&quot;701&quot; data-start=&quot;678&quot; data-section-id=&quot;1pzsm29&quot; data-ke-size=&quot;size16&quot;&gt;Highest ARPU Cohort&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;2020-11-08 Cohort&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;742&quot; data-start=&quot;734&quot; data-section-id=&quot;ynhx68&quot; data-ke-size=&quot;size16&quot;&gt;ARPU&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;2.69&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;771&quot; data-start=&quot;762&quot; data-section-id=&quot;78nrhg&quot; data-ke-size=&quot;size16&quot;&gt;Users&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;16,066명&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;836&quot; data-start=&quot;801&quot; data-ke-size=&quot;size16&quot;&gt;11월 8일 Cohort는 전체 매출 규모는 가장 크지 않았지만 유저 1명당 발생시킨 매출은 가장 높았다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;932&quot; data-start=&quot;867&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;892&quot; data-start=&quot;867&quot; data-section-id=&quot;ibsw81&quot;&gt;유입 규모보다 유입 품질이 중요할 수 있음&lt;/li&gt;
&lt;li data-end=&quot;932&quot; data-start=&quot;893&quot; data-section-id=&quot;1bfoh5l&quot;&gt;특정 유입 채널 또는 캠페인이 더 가치 있는 유저를 데려왔을 가능성&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;941&quot; data-start=&quot;934&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;974&quot; data-start=&quot;948&quot; data-section-id=&quot;qlbsbx&quot; data-ke-size=&quot;size20&quot;&gt;3. Purchase Frequency 분석&lt;/h4&gt;
&lt;p data-end=&quot;1029&quot; data-start=&quot;1023&quot; data-section-id=&quot;1hryr2v&quot; data-ke-size=&quot;size18&quot;&gt;KPI&lt;/p&gt;
&lt;p data-end=&quot;1061&quot; data-start=&quot;1031&quot; data-section-id=&quot;sc5vmt&quot; data-ke-size=&quot;size16&quot;&gt;Highest Purchase Frequency&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;2020-11-15 Cohort&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1116&quot; data-start=&quot;1094&quot; data-section-id=&quot;gmycw9&quot; data-ke-size=&quot;size16&quot;&gt;Purchase Frequency&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1.56회&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1159&quot; data-start=&quot;1144&quot; data-ke-size=&quot;size16&quot;&gt;11월 15일 Cohort는 구매 유저 1인당 평균 1.56회의 구매를 기록했다.&lt;/p&gt;
&lt;p data-end=&quot;1222&quot; data-start=&quot;1196&quot; data-ke-size=&quot;size16&quot;&gt;즉, 다른 Cohort보다 반복 구매 성향이 강했다.&lt;/p&gt;
&lt;p data-end=&quot;1235&quot; data-start=&quot;1224&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1235&quot; data-start=&quot;1224&quot; data-ke-size=&quot;size16&quot;&gt;CRM 관점 해석&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1280&quot; data-start=&quot;1237&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1254&quot; data-start=&quot;1237&quot; data-section-id=&quot;1mfcnn2&quot;&gt;재구매 가능성이 높은 유저군&lt;/li&gt;
&lt;li data-end=&quot;1280&quot; data-start=&quot;1255&quot; data-section-id=&quot;a8ynpa&quot;&gt;장기 고객으로 전환될 가능성이 높은 유저군&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1294&quot; data-start=&quot;1282&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;1312&quot; data-start=&quot;1301&quot; data-section-id=&quot;1hlfopp&quot; data-ke-size=&quot;size20&quot;&gt;4. AOV 분석&lt;/h4&gt;
&lt;h4 data-end=&quot;1352&quot; data-start=&quot;1346&quot; data-section-id=&quot;1hryr2v&quot; data-ke-size=&quot;size20&quot;&gt;KPI&lt;/h4&gt;
&lt;p data-end=&quot;1376&quot; data-start=&quot;1354&quot; data-section-id=&quot;uraxkv&quot; data-ke-size=&quot;size16&quot;&gt;Highest AOV Cohort&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;2021-01-17 Cohort&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1432&quot; data-start=&quot;1409&quot; data-section-id=&quot;wcwwow&quot; data-ke-size=&quot;size16&quot;&gt;Average Order Value&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;74.50&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1474&quot; data-start=&quot;1460&quot; data-ke-size=&quot;size16&quot;&gt;1월 17일 Cohort는 주문 횟수는 많지 않았지만 주문 1건당 금액이 가장 높았다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1547&quot; data-start=&quot;1516&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1526&quot; data-start=&quot;1516&quot; data-section-id=&quot;19ot45l&quot;&gt;고가 상품 구매&lt;/li&gt;
&lt;li data-end=&quot;1534&quot; data-start=&quot;1527&quot; data-section-id=&quot;mszn22&quot;&gt;묶음 구매&lt;/li&gt;
&lt;li data-end=&quot;1547&quot; data-start=&quot;1535&quot; data-section-id=&quot;lyxpp4&quot;&gt;특정 프로모션 효과&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-section-id=&quot;127a3s7&quot; data-start=&quot;2197&quot; data-end=&quot;2206&quot;&gt;최종 인사이트&lt;/h3&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot; data-section-id=&quot;mlm2cx&quot; data-start=&quot;2208&quot; data-end=&quot;2221&quot;&gt;Insight 1&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;2223&quot; data-end=&quot;2265&quot;&gt;매출이 가장 높은 Cohort와 ARPU가 가장 높은 Cohort는 다르다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;2267&quot; data-end=&quot;2291&quot;&gt;&amp;rarr; 유입량보다 유입 품질이 중요할 수 있다.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot; data-section-id=&quot;mlm2cy&quot; data-start=&quot;2293&quot; data-end=&quot;2306&quot;&gt;Insight 2&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;2308&quot; data-end=&quot;2341&quot;&gt;2020-11-15 Cohort는 구매 빈도가 가장 높았다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;2343&quot; data-end=&quot;2370&quot;&gt;&amp;rarr; CRM 및 리텐션 관점에서 우수한 고객군이다.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot; data-section-id=&quot;mlm2cz&quot; data-start=&quot;2372&quot; data-end=&quot;2385&quot;&gt;Insight 3&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;2387&quot; data-end=&quot;2418&quot;&gt;2021-01-17 Cohort는 객단가가 가장 높았다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;2420&quot; data-end=&quot;2452&quot;&gt;&amp;rarr; 고가 상품 구매 가능성이 높은 유저군으로 볼 수 있다.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot; data-section-id=&quot;mlm2d0&quot; data-start=&quot;2454&quot; data-end=&quot;2467&quot;&gt;Insight 4&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;2469&quot; data-end=&quot;2505&quot;&gt;LTV는 단순 리텐션보다 비즈니스 가치에 직접 연결되는 지표이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-start=&quot;2507&quot; data-end=&quot;2550&quot;&gt;&amp;rarr; 유지율이 높은 유저보다 실제 매출을 만드는 유저를 식별하는 것이 중요하다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;시각화&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1287&quot; data-origin-height=&quot;1423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bB7htG/dJMcaa6AHZ2/8Q1GUy7RsPT7NMtTqH0V50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bB7htG/dJMcaa6AHZ2/8Q1GUy7RsPT7NMtTqH0V50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bB7htG/dJMcaa6AHZ2/8Q1GUy7RsPT7NMtTqH0V50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbB7htG%2FdJMcaa6AHZ2%2F8Q1GUy7RsPT7NMtTqH0V50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1287&quot; height=&quot;1423&quot; data-origin-width=&quot;1287&quot; data-origin-height=&quot;1423&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;LTV&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;ARPU &amp;times; Purchase Frequency&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;어떤 Cohort가 가장 가치가 높은가?&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2020-11-15 Cohort는 ARPU는 최고가 아니었지만 구매 빈도가 가장 높아 최종적으로 가장 높은 LTV(3.78)를 기록했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;단순 매출 규모보다 고객의 반복 구매 행동이 장기 가치에 더 큰 영향을 미칠 수 있음을 확인하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/GA4 분석</category>
      <author>조성호</author>
      <guid isPermaLink="true">https://jshdata0794.tistory.com/30</guid>
      <comments>https://jshdata0794.tistory.com/30#entry30comment</comments>
      <pubDate>Sun, 31 May 2026 23:42:24 +0900</pubDate>
    </item>
    <item>
      <title>[GA4 코호트 분석] Day9-7 코호트 리텐션 분석 (Retention vs Purchase Analysis)</title>
      <link>https://jshdata0794.tistory.com/29</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; &quot;오래 남는 유저가 실제 구매도 많이 하는가?&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;분석 목적&lt;/h3&gt;
&lt;p data-end=&quot;236&quot; data-start=&quot;192&quot; data-ke-size=&quot;size16&quot;&gt;리텐션이 높은 유저 그룹이 실제 구매 전환에서도 높은 성과를 보이는지 확인한다.&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;단순히 사용자를 오래 유지시키는 것이 아니라 비즈니스 성과(구매)와 연결되는 유지 전략이 필요한지 검증한다.&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size23&quot;&gt;SQL&lt;/h3&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;1. 코호트 생성 확인&lt;/p&gt;
&lt;pre id=&quot;code_1780149266905&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 유저별 최초 방문 주차를 기준으로 cohort_week 생성
SELECT
  user_pseudo_id,
  DATE_TRUNC(
    MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
    WEEK
  ) AS cohort_week
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE event_name = 'session_start'
GROUP BY user_pseudo_id
ORDER BY cohort_week
LIMIT 100;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkuyeq/dJMcafmwgi1/Jx719AwEAsKbUNBxSmGyNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkuyeq/dJMcafmwgi1/Jx719AwEAsKbUNBxSmGyNK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkuyeq/dJMcafmwgi1/Jx719AwEAsKbUNBxSmGyNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdkuyeq%2FdJMcafmwgi1%2FJx719AwEAsKbUNBxSmGyNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2156&quot; height=&quot;541&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;2. 코호트별 유저 수 확인&lt;/p&gt;
&lt;pre id=&quot;code_1780149283938&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- cohort_week별 신규 유저 수 확인
WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id
)

SELECT
  cohort_week,
  COUNT(DISTINCT user_pseudo_id) AS total_users
FROM first_session
GROUP BY cohort_week
ORDER BY cohort_week;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2158&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G47CG/dJMcabEnC2O/50DXkIPuOZwS4QSpCquMp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G47CG/dJMcabEnC2O/50DXkIPuOZwS4QSpCquMp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G47CG/dJMcabEnC2O/50DXkIPuOZwS4QSpCquMp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG47CG%2FdJMcabEnC2O%2F50DXkIPuOZwS4QSpCquMp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2158&quot; height=&quot;549&quot; data-origin-width=&quot;2158&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;3. 유저별 활동 주차 확인&lt;/p&gt;
&lt;pre id=&quot;code_1780149295814&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 유저가 session_start를 발생시킨 활동 주차 확인
SELECT DISTINCT
  user_pseudo_id,
  DATE_TRUNC(
    DATE(TIMESTAMP_MICROS(event_timestamp)),
    WEEK
  ) AS activity_week
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE event_name = 'session_start'
ORDER BY user_pseudo_id, activity_week
LIMIT 100;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2157&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z9fAP/dJMcadWt1zo/knx7rNSDyZrr1YT0KzBWb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z9fAP/dJMcadWt1zo/knx7rNSDyZrr1YT0KzBWb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z9fAP/dJMcadWt1zo/knx7rNSDyZrr1YT0KzBWb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ9fAP%2FdJMcadWt1zo%2Fknx7rNSDyZrr1YT0KzBWb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2157&quot; height=&quot;550&quot; data-origin-width=&quot;2157&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;4. 코호트별 리텐션 유저 수 확인&lt;/p&gt;
&lt;pre id=&quot;code_1780149400267&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 최초 방문 이후 다시 방문한 유저 수 계산
WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id
),

user_activity AS (
  SELECT DISTINCT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS activity_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
)

SELECT
  f.cohort_week,

  -- week_number가 1 이상인 경우만 재방문으로 계산
  COUNT(DISTINCT CASE
    WHEN DATE_DIFF(a.activity_week, f.cohort_week, WEEK) &amp;gt; 0
    THEN a.user_pseudo_id
  END) AS retained_users

FROM first_session f
LEFT JOIN user_activity a
  ON f.user_pseudo_id = a.user_pseudo_id
GROUP BY f.cohort_week
ORDER BY f.cohort_week;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2158&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7tywk/dJMcafUlIku/pK0yIm7OYVaSKEdjhOtvCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7tywk/dJMcafUlIku/pK0yIm7OYVaSKEdjhOtvCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7tywk/dJMcafUlIku/pK0yIm7OYVaSKEdjhOtvCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7tywk%2FdJMcafUlIku%2FpK0yIm7OYVaSKEdjhOtvCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2158&quot; height=&quot;479&quot; data-origin-width=&quot;2158&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;5. 코호트별 구매 유저 수 확인&lt;/p&gt;
&lt;pre id=&quot;code_1780149423699&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- cohort_week별 구매 경험 유저 수 계산
WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id
),

purchase_users AS (
  SELECT DISTINCT
    user_pseudo_id
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'purchase'
)

SELECT
  f.cohort_week,

  -- 해당 cohort에서 한 번이라도 구매한 유저 수
  COUNT(DISTINCT p.user_pseudo_id) AS purchasers

FROM first_session f
LEFT JOIN purchase_users p
  ON f.user_pseudo_id = p.user_pseudo_id
GROUP BY f.cohort_week
ORDER BY f.cohort_week;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2151&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhb5qe/dJMcaf7O0a8/oA109wRkkjanWoevpJmDyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhb5qe/dJMcaf7O0a8/oA109wRkkjanWoevpJmDyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhb5qe/dJMcaf7O0a8/oA109wRkkjanWoevpJmDyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbhb5qe%2FdJMcaf7O0a8%2FoA109wRkkjanWoevpJmDyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2151&quot; height=&quot;543&quot; data-origin-width=&quot;2151&quot; data-origin-height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;6. 최종 결과&lt;/p&gt;
&lt;pre id=&quot;code_1780149552035&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Part7: 코호트별 리텐션율과 구매율 비교
WITH first_session AS (
  -- 유저별 최초 방문 주차 생성
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id
),

user_activity AS (
  -- 유저별 활동 주차 생성
  SELECT DISTINCT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS activity_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
),

cohort_size AS (
  -- cohort_week별 전체 유저 수
  SELECT
    cohort_week,
    COUNT(DISTINCT user_pseudo_id) AS total_users
  FROM first_session
  GROUP BY cohort_week
),

retention_table AS (
  -- 최초 방문 주차 이후 다시 방문한 유저 수
  SELECT
    f.cohort_week,
    COUNT(DISTINCT CASE
      WHEN DATE_DIFF(a.activity_week, f.cohort_week, WEEK) &amp;gt; 0
      THEN a.user_pseudo_id
    END) AS retained_users
  FROM first_session f
  LEFT JOIN user_activity a
    ON f.user_pseudo_id = a.user_pseudo_id
  GROUP BY f.cohort_week
),

purchase_table AS (
  -- cohort_week별 구매 유저 수
  SELECT
    f.cohort_week,
    COUNT(DISTINCT p.user_pseudo_id) AS purchasers
  FROM first_session f
  LEFT JOIN (
    SELECT DISTINCT
      user_pseudo_id
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
    WHERE event_name = 'purchase'
  ) p
    ON f.user_pseudo_id = p.user_pseudo_id
  GROUP BY f.cohort_week
)

SELECT
  c.cohort_week,
  c.total_users,
  r.retained_users,
  p.purchasers,

  -- 리텐션율 = 재방문 유저 수 / 전체 코호트 유저 수
  ROUND(r.retained_users * 100.0 / c.total_users, 2) AS retention_rate,

  -- 구매율 = 구매 유저 수 / 전체 코호트 유저 수
  ROUND(p.purchasers * 100.0 / c.total_users, 2) AS purchase_rate

FROM cohort_size c
LEFT JOIN retention_table r
  ON c.cohort_week = r.cohort_week
LEFT JOIN purchase_table p
  ON c.cohort_week = p.cohort_week
ORDER BY c.cohort_week;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2152&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C1Pfl/dJMcaicuy6x/lCAuIRUTxRa1JAOKZjKKxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C1Pfl/dJMcaicuy6x/lCAuIRUTxRa1JAOKZjKKxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C1Pfl/dJMcaicuy6x/lCAuIRUTxRa1JAOKZjKKxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC1Pfl%2FdJMcaicuy6x%2FlCAuIRUTxRa1JAOKZjKKxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2152&quot; height=&quot;544&quot; data-origin-width=&quot;2152&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;71&quot; data-start=&quot;65&quot; data-section-id=&quot;1hryr2v&quot; data-ke-size=&quot;size23&quot;&gt;KPI&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;295&quot; data-start=&quot;73&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;104&quot; data-start=&quot;73&quot; data-section-id=&quot;1o9jq6j&quot;&gt;Avg Retention Rate: &lt;b&gt;6.20%&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;161&quot; data-start=&quot;105&quot; data-section-id=&quot;h81xag&quot;&gt;Highest Retention Rate: &lt;b&gt;12.59%&lt;/b&gt; (2020-11-08 Cohort)&lt;/li&gt;
&lt;li data-end=&quot;192&quot; data-start=&quot;162&quot; data-section-id=&quot;px30tu&quot;&gt;Avg Purchase Rate: &lt;b&gt;1.56%&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;247&quot; data-start=&quot;193&quot; data-section-id=&quot;g4tyit&quot;&gt;Highest Purchase Rate: &lt;b&gt;2.96%&lt;/b&gt; (2020-11-08 Cohort)&lt;/li&gt;
&lt;li data-end=&quot;295&quot; data-start=&quot;248&quot; data-section-id=&quot;37rvsz&quot;&gt;Correlation (Retention &amp;harr; Purchase): &lt;b&gt;0.872&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;338&quot; data-start=&quot;311&quot; data-section-id=&quot;1lwg302&quot; data-ke-size=&quot;size23&quot;&gt;1. 리텐션이 높은 코호트는 구매율도 높았다&lt;/h3&gt;
&lt;p data-end=&quot;357&quot; data-start=&quot;340&quot; data-ke-size=&quot;size18&quot;&gt;2020-11-08 Cohort&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;406&quot; data-start=&quot;359&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;383&quot; data-start=&quot;359&quot; data-section-id=&quot;1y0cjls&quot;&gt;Retention Rate: 12.59%&lt;/li&gt;
&lt;li data-end=&quot;406&quot; data-start=&quot;384&quot; data-section-id=&quot;294ryl&quot;&gt;Purchase Rate: 2.96%&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;431&quot; data-start=&quot;408&quot; data-ke-size=&quot;size16&quot;&gt;전체 기간 중 가장 높은 수치를 기록했다.&lt;/p&gt;
&lt;p data-end=&quot;436&quot; data-start=&quot;433&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;455&quot; data-start=&quot;438&quot; data-ke-size=&quot;size18&quot;&gt;2021-01-31 Cohort&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;500&quot; data-start=&quot;457&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;477&quot; data-start=&quot;457&quot; data-section-id=&quot;1b9aytt&quot;&gt;Retention Rate: 0%&lt;/li&gt;
&lt;li data-end=&quot;500&quot; data-start=&quot;478&quot; data-section-id=&quot;2ag8hy&quot;&gt;Purchase Rate: 0.42%&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;518&quot; data-start=&quot;502&quot; data-ke-size=&quot;size16&quot;&gt;전체 기간 중 가장 낮은 수준을 보였다.&lt;/p&gt;
&lt;p data-end=&quot;567&quot; data-start=&quot;520&quot; data-ke-size=&quot;size16&quot;&gt;즉, 오래 남는 유저가 실제 구매로 이어질 가능성도 높다는 패턴을 확인할 수 있었다.&lt;/p&gt;
&lt;p data-end=&quot;567&quot; data-start=&quot;520&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;604&quot; data-start=&quot;574&quot; data-section-id=&quot;1lnz4og&quot; data-ke-size=&quot;size23&quot;&gt;2. 시간이 지날수록 리텐션과 구매율이 함께 감소&lt;/h3&gt;
&lt;p data-end=&quot;616&quot; data-start=&quot;606&quot; data-ke-size=&quot;size18&quot;&gt;11월 Cohort&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;640&quot; data-start=&quot;618&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;629&quot; data-start=&quot;618&quot; data-section-id=&quot;6as098&quot;&gt;리텐션 8~12%&lt;/li&gt;
&lt;li data-end=&quot;640&quot; data-start=&quot;630&quot; data-section-id=&quot;s9b9hu&quot;&gt;구매율 2~3%&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;648&quot; data-start=&quot;642&quot; data-ke-size=&quot;size18&quot;&gt;12월 이후&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;673&quot; data-start=&quot;650&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;660&quot; data-start=&quot;650&quot; data-section-id=&quot;178qgxd&quot;&gt;리텐션 3~5%&lt;/li&gt;
&lt;li data-end=&quot;673&quot; data-start=&quot;661&quot; data-section-id=&quot;hnwx6y&quot;&gt;구매율 0.5~2%&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;686&quot; data-start=&quot;675&quot; data-ke-size=&quot;size16&quot;&gt;수준으로 감소하였다.&lt;/p&gt;
&lt;p data-end=&quot;740&quot; data-start=&quot;688&quot; data-ke-size=&quot;size16&quot;&gt;신규 유입 규모는 증가했지만 장기 유지와 구매 전환 품질은 오히려 하락한 것으로 볼 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;740&quot; data-start=&quot;688&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;766&quot; data-start=&quot;747&quot; data-section-id=&quot;1obnvhs&quot; data-ke-size=&quot;size23&quot;&gt;3. 강한 양의 상관관계 확인&lt;/h3&gt;
&lt;p data-end=&quot;772&quot; data-start=&quot;768&quot; data-ke-size=&quot;size18&quot;&gt;상관계수 : 0.872&lt;/p&gt;
&lt;p data-end=&quot;798&quot; data-start=&quot;793&quot; data-ke-size=&quot;size16&quot;&gt;일반적으로 0.7 이상 &amp;rarr; 강한 양의 상관관계으로 해석한다.&lt;/p&gt;
&lt;p data-end=&quot;798&quot; data-start=&quot;793&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;리텐션이 높은 코호트&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;rarr; 구매율도 높은 경향&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;798&quot; data-start=&quot;793&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;880&quot; data-start=&quot;873&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size23&quot;&gt;시각화&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;1421&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ba8Xkt/dJMcaffLtBT/hd4VKzzPXUB84QErKB82Wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ba8Xkt/dJMcaffLtBT/hd4VKzzPXUB84QErKB82Wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ba8Xkt/dJMcaffLtBT/hd4VKzzPXUB84QErKB82Wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba8Xkt%2FdJMcaffLtBT%2Fhd4VKzzPXUB84QErKB82Wk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1286&quot; height=&quot;1421&quot; data-origin-width=&quot;1286&quot; data-origin-height=&quot;1421&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;코호트별 리텐션율과 구매율 간 상관계수는 0.872로 나타났으며, 유지되는 유저가 실제 구매 성과에도 긍정적인 영향을 미치는 경향을 확인하였다.&lt;/p&gt;
&lt;h3 data-end=&quot;1476&quot; data-start=&quot;1467&quot; data-section-id=&quot;18y1btj&quot; data-ke-size=&quot;size23&quot;&gt;분석 목적&lt;/h3&gt;
&lt;p data-end=&quot;1539&quot; data-start=&quot;1478&quot; data-ke-size=&quot;size16&quot;&gt;코호트별 리텐션율과 구매율을 함께 분석하여 유지되는 유저가 실제 비즈니스 성과(구매)로 이어지는지 확인하였다.&lt;/p&gt;
&lt;h3 data-end=&quot;1550&quot; data-start=&quot;1541&quot; data-section-id=&quot;g1j7cj&quot; data-ke-size=&quot;size23&quot;&gt;핵심 결과&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1653&quot; data-start=&quot;1552&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1568&quot; data-start=&quot;1552&quot; data-section-id=&quot;1iigpea&quot;&gt;평균 리텐션율은 6.20%&lt;/li&gt;
&lt;li data-end=&quot;1584&quot; data-start=&quot;1569&quot; data-section-id=&quot;1qi4p20&quot;&gt;평균 구매율은 1.56%&lt;/li&gt;
&lt;li data-end=&quot;1628&quot; data-start=&quot;1585&quot; data-section-id=&quot;1sxcj6o&quot;&gt;최고 리텐션과 최고 구매율은 모두 2020-11-08 Cohort에서 발생&lt;/li&gt;
&lt;li data-end=&quot;1653&quot; data-start=&quot;1629&quot; data-section-id=&quot;53evmm&quot;&gt;리텐션과 구매율 간 상관계수는 0.872&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1663&quot; data-start=&quot;1655&quot; data-section-id=&quot;qb9gta&quot; data-ke-size=&quot;size23&quot;&gt;인사이트&lt;/h3&gt;
&lt;p data-end=&quot;1766&quot; data-start=&quot;1665&quot; data-ke-size=&quot;size16&quot;&gt;리텐션이 높은 코호트일수록 구매율도 높게 나타났다. 단순히 사용자를 많이 유입시키는 것보다 장기적으로 유지시키는 전략이 구매 성과 향상에도 긍정적인 영향을 줄 수 있음을 확인하였다.&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;299&quot; data-start=&quot;238&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/GA4 분석</category>
      <author>조성호</author>
      <guid isPermaLink="true">https://jshdata0794.tistory.com/29</guid>
      <comments>https://jshdata0794.tistory.com/29#entry29comment</comments>
      <pubDate>Sat, 30 May 2026 23:21:53 +0900</pubDate>
    </item>
    <item>
      <title>[GA4 코호트 분석] Day9-6 코호트 리텐션 분석 (Category 리텐션 비교 분석)</title>
      <link>https://jshdata0794.tistory.com/28</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;특정 상품 카테고리에 관심을 보인 유저는 이후 주차에도 재방문하는가?&lt;/h4&gt;
&lt;p data-end=&quot;216&quot; data-start=&quot;157&quot; data-ke-size=&quot;size16&quot;&gt;유저가 가장 많이 조회한 상품 카테고리를 기준으로 그룹을 나누고 카테고리별로 유저 유지율 차이가 존재하는지 분석했습니다.&lt;/p&gt;
&lt;p data-end=&quot;216&quot; data-start=&quot;157&quot; data-ke-size=&quot;size16&quot;&gt;목표&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;330&quot; data-start=&quot;259&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;279&quot; data-start=&quot;259&quot; data-section-id=&quot;bq8oq3&quot;&gt;충성도가 높은 상품 카테고리 발견&lt;/li&gt;
&lt;li data-end=&quot;300&quot; data-start=&quot;280&quot; data-section-id=&quot;hdzx5t&quot;&gt;재방문 유도가 강한 카테고리 확인&lt;/li&gt;
&lt;li data-end=&quot;330&quot; data-start=&quot;301&quot; data-section-id=&quot;125wrl4&quot;&gt;이후 CRM / 추천 / 리마케팅 전략 방향 도출&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SQL&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 카테고리 데이터 확인&lt;/p&gt;
&lt;pre id=&quot;code_1779450386152&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Part6-1. item_category 값 확인

SELECT
  item.item_category,
  COUNT(*) AS event_count
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`,
UNNEST(items) AS item
WHERE event_name = 'view_item'
GROUP BY item.item_category
ORDER BY event_count DESC;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2155&quot; data-origin-height=&quot;547&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lIAHk/dJMcafs93EU/TuYddY6KX5bEpGBHeVs3b1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lIAHk/dJMcafs93EU/TuYddY6KX5bEpGBHeVs3b1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lIAHk/dJMcafs93EU/TuYddY6KX5bEpGBHeVs3b1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlIAHk%2FdJMcafs93EU%2FTuYddY6KX5bEpGBHeVs3b1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2155&quot; height=&quot;547&quot; data-origin-width=&quot;2155&quot; data-origin-height=&quot;547&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 카테고리별 유저 정의&lt;/p&gt;
&lt;pre id=&quot;code_1779450395245&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Part6-2. 유저가 조회한 대표 카테고리 확인

SELECT
  user_pseudo_id,
  item.item_category AS item_category,
  COUNT(*) AS view_item_count
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`,
UNNEST(items) AS item
WHERE event_name = 'view_item'
GROUP BY
  user_pseudo_id,
  item_category
ORDER BY
  user_pseudo_id,
  view_item_count DESC;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2155&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uXTRt/dJMcahkgIeB/vVtopvPUPuETjKoJ3Tfzek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uXTRt/dJMcahkgIeB/vVtopvPUPuETjKoJ3Tfzek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uXTRt/dJMcahkgIeB/vVtopvPUPuETjKoJ3Tfzek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuXTRt%2FdJMcahkgIeB%2FvVtopvPUPuETjKoJ3Tfzek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2155&quot; height=&quot;542&quot; data-origin-width=&quot;2155&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 카테고리별 코호트 리텐션 최종 SQL&lt;/p&gt;
&lt;pre id=&quot;code_1779450403396&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Part6-3. Category별 Weekly Cohort Retention 분석

WITH user_category AS (
  -- 유저가 가장 많이 조회한 대표 카테고리 선정
  SELECT
    user_pseudo_id,
    item_category
  FROM (
    SELECT
      user_pseudo_id,
      IFNULL(NULLIF(item.item_category, ''), 'Unknown') AS item_category,
      COUNT(*) AS view_item_count,
      ROW_NUMBER() OVER (
        PARTITION BY user_pseudo_id
        ORDER BY COUNT(*) DESC
      ) AS rn
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`,
    UNNEST(items) AS item
    WHERE event_name = 'view_item'
    GROUP BY
      user_pseudo_id,
      item_category
  )
  WHERE rn = 1
),

first_session AS (
  -- 유저별 첫 방문 주차
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id
),

user_activity AS (
  -- 유저별 활동 주차
  SELECT DISTINCT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS activity_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
),

category_retention AS (
  -- 카테고리별 코호트 주차별 활성 유저 수
  SELECT
    c.item_category,
    f.cohort_week,
    DATE_DIFF(a.activity_week, f.cohort_week, WEEK) AS week_number,
    COUNT(DISTINCT a.user_pseudo_id) AS active_users
  FROM first_session f
  JOIN user_activity a
    ON f.user_pseudo_id = a.user_pseudo_id
  JOIN user_category c
    ON f.user_pseudo_id = c.user_pseudo_id
  WHERE DATE_DIFF(a.activity_week, f.cohort_week, WEEK) &amp;gt;= 0
  GROUP BY
    c.item_category,
    f.cohort_week,
    week_number
),

cohort_size AS (
  -- 카테고리별 코호트 최초 유저 수
  SELECT
    item_category,
    cohort_week,
    active_users AS cohort_users
  FROM category_retention
  WHERE week_number = 0
)

SELECT
  r.item_category,
  r.cohort_week,
  r.week_number,
  r.active_users,
  c.cohort_users,
  ROUND(SAFE_DIVIDE(r.active_users, c.cohort_users) * 100, 2) AS retention_rate
FROM category_retention r
JOIN cohort_size c
  ON r.item_category = c.item_category
 AND r.cohort_week = c.cohort_week
ORDER BY
  r.item_category,
  r.cohort_week,
  r.week_number;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qIWjq/dJMcadWoCP4/9DW1w3nMzTJSi0IDQgrrH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qIWjq/dJMcadWoCP4/9DW1w3nMzTJSi0IDQgrrH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qIWjq/dJMcadWoCP4/9DW1w3nMzTJSi0IDQgrrH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqIWjq%2FdJMcadWoCP4%2F9DW1w3nMzTJSi0IDQgrrH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2156&quot; height=&quot;550&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;828&quot; data-start=&quot;817&quot; data-section-id=&quot;1uw7c3w&quot; data-ke-size=&quot;size20&quot;&gt;핵심 SQL 로직&lt;/h4&gt;
&lt;p data-end=&quot;850&quot; data-start=&quot;830&quot; data-section-id=&quot;16q1x0j&quot; data-ke-size=&quot;size18&quot;&gt;1. 유저별 대표 카테고리 선정&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;ROW_NUMBER() OVER (
  PARTITION BY user_pseudo_id
  ORDER BY COUNT(*) DESC
)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;979&quot; data-start=&quot;941&quot; data-ke-size=&quot;size16&quot;&gt;조회 수 기준 가장 많이 본 카테고리를 대표 카테고리로 선정했습니다.&lt;/p&gt;
&lt;h4 data-end=&quot;1008&quot; data-start=&quot;986&quot; data-section-id=&quot;vwyvw1&quot; data-ke-size=&quot;size20&quot;&gt;2. Weekly Cohort 생성&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;lisp&quot;&gt;&lt;code&gt;DATE_TRUNC(
  MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
  WEEK
)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1118&quot; data-start=&quot;1091&quot; data-ke-size=&quot;size16&quot;&gt;최초 방문 주차를 기준으로 코호트를 생성했습니다.&lt;/p&gt;
&lt;h4 data-end=&quot;1137&quot; data-start=&quot;1125&quot; data-section-id=&quot;twh0eg&quot; data-ke-size=&quot;size20&quot;&gt;3. 리텐션 계산&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;SAFE_DIVIDE(active_users, cohort_users) * 100&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1217&quot; data-start=&quot;1197&quot; data-ke-size=&quot;size16&quot;&gt;각 카테고리별 잔존율을 계산했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과 해석&lt;/h3&gt;
&lt;h4 data-end=&quot;1260&quot; data-start=&quot;1236&quot; data-section-id=&quot;1u91wog&quot; data-ke-size=&quot;size20&quot;&gt;1. 일부 카테고리는 높은 리텐션 유지&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1334&quot; data-start=&quot;1270&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1289&quot; data-start=&quot;1270&quot; data-section-id=&quot;1o6fdf&quot;&gt;Women's T-Shirts/&lt;/li&gt;
&lt;li data-end=&quot;1311&quot; data-start=&quot;1290&quot; data-section-id=&quot;xjrbep&quot;&gt;Shopping and Totes/&lt;/li&gt;
&lt;li data-end=&quot;1334&quot; data-start=&quot;1312&quot; data-section-id=&quot;1kt40b0&quot;&gt;Google Cloud 관련 카테고리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1359&quot; data-start=&quot;1336&quot; data-ke-size=&quot;size16&quot;&gt;등이 상대적으로 높은 리텐션을 보였습니다.&lt;/p&gt;
&lt;p data-end=&quot;1359&quot; data-start=&quot;1336&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1375&quot; data-start=&quot;1361&quot; data-ke-size=&quot;size16&quot;&gt;이는 단순 상품 탐색보다&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1408&quot; data-start=&quot;1377&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1386&quot; data-start=&quot;1377&quot; data-section-id=&quot;zkzrak&quot;&gt;브랜드 관심도&lt;/li&gt;
&lt;li data-end=&quot;1397&quot; data-start=&quot;1387&quot; data-section-id=&quot;1bysxpo&quot;&gt;굿즈/팬덤 성향&lt;/li&gt;
&lt;li data-end=&quot;1408&quot; data-start=&quot;1398&quot; data-section-id=&quot;7i51cc&quot;&gt;반복 탐색 행동&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1435&quot; data-start=&quot;1410&quot; data-ke-size=&quot;size16&quot;&gt;이 강하게 나타난 것으로 해석할 수 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;1435&quot; data-start=&quot;1410&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;1466&quot; data-start=&quot;1442&quot; data-section-id=&quot;15luc4d&quot; data-ke-size=&quot;size20&quot;&gt;2. 일반 카테고리는 빠른 리텐션 감소&lt;/h4&gt;
&lt;p data-end=&quot;1478&quot; data-start=&quot;1468&quot; data-ke-size=&quot;size16&quot;&gt;대부분 카테고리&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1503&quot; data-start=&quot;1480&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1490&quot; data-start=&quot;1480&quot; data-section-id=&quot;17xmhbo&quot;&gt;Week0 이후&lt;/li&gt;
&lt;li data-end=&quot;1503&quot; data-start=&quot;1491&quot; data-section-id=&quot;1bazlbp&quot;&gt;급격한 리텐션 하락&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1553&quot; data-start=&quot;1521&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;상품 조회는 발생하지만 재방문까지 이어지는 비율은 낮다&amp;rdquo;&lt;/p&gt;
&lt;h4 data-end=&quot;1608&quot; data-start=&quot;1580&quot; data-section-id=&quot;1a8x7bl&quot; data-ke-size=&quot;size20&quot;&gt;3. 특정 카테고리는 CRM 활용 가능성 존재&lt;/h4&gt;
&lt;p data-end=&quot;1632&quot; data-start=&quot;1610&quot; data-ke-size=&quot;size16&quot;&gt;반복 방문 성향이 높은 카테고리&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1674&quot; data-start=&quot;1634&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1642&quot; data-start=&quot;1634&quot; data-section-id=&quot;bdzov8&quot;&gt;추천 시스템&lt;/li&gt;
&lt;li data-end=&quot;1649&quot; data-start=&quot;1643&quot; data-section-id=&quot;1tf8z0p&quot;&gt;리마케팅&lt;/li&gt;
&lt;li data-end=&quot;1662&quot; data-start=&quot;1650&quot; data-section-id=&quot;19v2car&quot;&gt;이메일/푸시 CRM&lt;/li&gt;
&lt;li data-end=&quot;1674&quot; data-start=&quot;1663&quot; data-section-id=&quot;1lbvnx5&quot;&gt;개인화 상품 추천&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1699&quot; data-start=&quot;1676&quot; data-ke-size=&quot;size16&quot;&gt;전략에 활용 가능성이 높다고 판단했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;2551&quot; data-start=&quot;2542&quot; data-section-id=&quot;127a3s7&quot; data-ke-size=&quot;size23&quot;&gt;최종 인사이트&lt;/h3&gt;
&lt;p data-end=&quot;2590&quot; data-start=&quot;2565&quot; data-ke-size=&quot;size16&quot;&gt;단순히 &amp;ldquo;어떤 상품이 많이 조회되었는가&amp;rdquo;보다 &amp;ldquo;어떤 카테고리가 유저를 다시 돌아오게 만드는가&amp;rdquo;가 더 중요하다는 점을 확인할 수 있었습니다.&lt;/p&gt;
&lt;p data-end=&quot;2695&quot; data-start=&quot;2648&quot; data-ke-size=&quot;size16&quot;&gt;특히 일부 브랜드/굿즈 성향 카테고리는 일반 상품 대비 높은 리텐션 특성을 보였으며, 이는 향후&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2731&quot; data-start=&quot;2704&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2712&quot; data-start=&quot;2704&quot; data-section-id=&quot;1uoc4bp&quot;&gt;CRM 전략&lt;/li&gt;
&lt;li data-end=&quot;2721&quot; data-start=&quot;2713&quot; data-section-id=&quot;kp8egg&quot;&gt;개인화 추천&lt;/li&gt;
&lt;li data-end=&quot;2731&quot; data-start=&quot;2722&quot; data-section-id=&quot;u4c15t&quot;&gt;리텐션 마케팅&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;2761&quot; data-start=&quot;2733&quot; data-ke-size=&quot;size16&quot;&gt;관점에서 중요한 기준이 될 수 있다고 판단했습니다.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-start=&quot;1676&quot; data-end=&quot;1699&quot;&gt;시각화&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1285&quot; data-origin-height=&quot;1420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZaHWY/dJMcacDfw5j/KOIBllbBqByoy8V4c1Q5FK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZaHWY/dJMcacDfw5j/KOIBllbBqByoy8V4c1Q5FK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZaHWY/dJMcacDfw5j/KOIBllbBqByoy8V4c1Q5FK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZaHWY%2FdJMcacDfw5j%2FKOIBllbBqByoy8V4c1Q5FK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1285&quot; height=&quot;1420&quot; data-origin-width=&quot;1285&quot; data-origin-height=&quot;1420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;1092&quot; data-start=&quot;1036&quot; data-ke-size=&quot;size16&quot;&gt;시각화 에서는&amp;ldquo;어떤 카테고리가 유저를 다시 방문하게 만드는가&amp;rdquo;에 집중했습니다.&lt;/p&gt;
&lt;p data-end=&quot;1199&quot; data-start=&quot;1094&quot; data-ke-size=&quot;size16&quot;&gt;분석 과정에서 일부 카테고리는 표본 수가 적어 리텐션이 과대 계산되는 현상이 발생했고 이를 필터링하며 데이터 해석에서 표본 수와 이상치 제거가 중요하다는 점도 함께 확인할 수 있었습니다.&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;1313&quot; data-start=&quot;1201&quot; data-ke-size=&quot;size16&quot;&gt;최종적으로는 브랜드/굿즈 성향 카테고리가 상대적으로 높은 리텐션 특성을 보였으며 향후 CRM 및 추천 전략에서는 단순 인기 상품보다 재방문 유지력이 높은 카테고리 중심 접근이 중요하다고 판단했습니다.&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;2761&quot; data-start=&quot;2733&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;2761&quot; data-start=&quot;2733&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;2761&quot; data-start=&quot;2733&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;2761&quot; data-start=&quot;2733&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/GA4 분석</category>
      <author>조성호</author>
      <guid isPermaLink="true">https://jshdata0794.tistory.com/28</guid>
      <comments>https://jshdata0794.tistory.com/28#entry28comment</comments>
      <pubDate>Fri, 22 May 2026 22:37:44 +0900</pubDate>
    </item>
    <item>
      <title>[GA4 코호트 분석] Day9-5 코호트 리텐션 분석 (User Type별 리텐션 비교 분석)</title>
      <link>https://jshdata0794.tistory.com/27</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;신규 유저와 재방문 유저 중 누가 더 오래 유지되는가?&lt;/h4&gt;
&lt;p data-end=&quot;69&quot; data-start=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;이번 분석의 목적은 신규 유저와 재방문 유저 중 어떤 그룹이 더 오래 유지되는지를 확인하는 것입니다.&lt;/p&gt;
&lt;p data-end=&quot;192&quot; data-start=&quot;71&quot; data-ke-size=&quot;size16&quot;&gt;단순히 전체 리텐션율만 보면 어떤 유저군에서 이탈이 크게 발생하는지 파악하기 어렵습니다. 따라서 사용자를 New User와 Returning User로 구분한 뒤, 각 그룹의 주차별 리텐션 변화를 비교했습니다.&lt;/p&gt;
&lt;p data-end=&quot;284&quot; data-start=&quot;194&quot; data-ke-size=&quot;size16&quot;&gt;이를 통해 신규 유저의 초기 이탈이 큰지, 재방문 유저가 더 안정적으로 유지되는지 확인하고, 이후 신규 유저 재방문 유도 전략의 필요성을 판단하고자 했습니다.&lt;/p&gt;
&lt;p data-end=&quot;284&quot; data-start=&quot;194&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SQL&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. User Type 정의 확인 SQL&lt;/p&gt;
&lt;pre id=&quot;code_1779449159553&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Part5-1. 사용자 유형 정의 확인
-- 목적: first_visit 이벤트 여부를 기준으로 New / Returning User를 구분한다.

SELECT
  CASE
    WHEN event_name = 'first_visit' THEN 'New User'
    ELSE 'Returning User'
  END AS user_type,
  COUNT(DISTINCT user_pseudo_id) AS users
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE event_name IN ('first_visit', 'session_start')
GROUP BY user_type
ORDER BY users DESC;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2172&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X2XmF/dJMcahq051b/XtvxBfbPivUVwbghCc5m7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X2XmF/dJMcahq051b/XtvxBfbPivUVwbghCc5m7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X2XmF/dJMcahq051b/XtvxBfbPivUVwbghCc5m7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX2XmF%2FdJMcahq051b%2FXtvxBfbPivUVwbghCc5m7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2172&quot; height=&quot;549&quot; data-origin-width=&quot;2172&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. User Type별 Weekly Retention SQL&lt;/p&gt;
&lt;pre id=&quot;code_1779449150907&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Part5-2. User Type별 주차별 리텐션 분석
-- 목적: New User / Returning User별로 cohort_week 이후 재방문율을 비교한다.

WITH first_session AS (
  -- 사용자별 최초 session_start 시점 계산
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id
),

user_type AS (
  -- first_visit 이벤트가 있으면 New User, 없으면 Returning User로 분류
  SELECT
    user_pseudo_id,
    CASE
      WHEN COUNTIF(event_name = 'first_visit') &amp;gt; 0 THEN 'New User'
      ELSE 'Returning User'
    END AS user_type
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name IN ('first_visit', 'session_start')
  GROUP BY user_pseudo_id
),

user_activity AS (
  -- 사용자별 활동 주차 계산
  SELECT DISTINCT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS activity_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
),

retention AS (
  -- cohort_week 기준으로 몇 주 후에 재방문했는지 계산
  SELECT
    f.cohort_week,
    u.user_type,
    DATE_DIFF(a.activity_week, f.cohort_week, WEEK) AS week_number,
    COUNT(DISTINCT a.user_pseudo_id) AS active_users
  FROM first_session f
  JOIN user_type u
    ON f.user_pseudo_id = u.user_pseudo_id
  JOIN user_activity a
    ON f.user_pseudo_id = a.user_pseudo_id
  WHERE DATE_DIFF(a.activity_week, f.cohort_week, WEEK) &amp;gt;= 0
  GROUP BY
    f.cohort_week,
    u.user_type,
    week_number
),

cohort_size AS (
  -- user_type별 cohort_week의 최초 유저 수 계산
  SELECT
    cohort_week,
    user_type,
    active_users AS cohort_users
  FROM retention
  WHERE week_number = 0
)

SELECT
  r.cohort_week,
  r.user_type,
  r.week_number,
  r.active_users,
  c.cohort_users,
  ROUND(SAFE_DIVIDE(r.active_users, c.cohort_users) * 100, 2) AS retention_rate
FROM retention r
JOIN cohort_size c
  ON r.cohort_week = c.cohort_week
 AND r.user_type = c.user_type
ORDER BY
  r.cohort_week,
  r.user_type,
  r.week_number;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2161&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2fiRp/dJMcahYOnGf/hE6dTSK4IicjQgpkjOrMl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2fiRp/dJMcahYOnGf/hE6dTSK4IicjQgpkjOrMl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2fiRp/dJMcahYOnGf/hE6dTSK4IicjQgpkjOrMl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2fiRp%2FdJMcahYOnGf%2FhE6dTSK4IicjQgpkjOrMl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2161&quot; height=&quot;549&quot; data-origin-width=&quot;2161&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과 해석&lt;/h3&gt;
&lt;h4 data-end=&quot;531&quot; data-start=&quot;497&quot; data-section-id=&quot;1df6oe7&quot; data-ke-size=&quot;size20&quot;&gt;1. Returning User 리텐션이 압도적으로 높음&lt;/h4&gt;
&lt;p data-end=&quot;610&quot; data-start=&quot;533&quot; data-ke-size=&quot;size16&quot;&gt;Returning User 평균 리텐션은 약 5.27%로 New User 평균 리텐션 1.09% 대비 약 4~5배 높게 나타났습니다.&lt;/p&gt;
&lt;p data-end=&quot;654&quot; data-start=&quot;612&quot; data-ke-size=&quot;size16&quot;&gt;이는 이미 서비스를 경험한 유저일수록 반복 방문 가능성이 높다는 의미입니다.&lt;/p&gt;
&lt;p data-end=&quot;654&quot; data-start=&quot;612&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;684&quot; data-start=&quot;661&quot; data-section-id=&quot;1f3mzgd&quot; data-ke-size=&quot;size20&quot;&gt;2. 신규 유저 초기 이탈이 매우 큼&lt;/h4&gt;
&lt;p data-end=&quot;714&quot; data-start=&quot;686&quot; data-ke-size=&quot;size16&quot;&gt;New User는 Week1부터 빠르게 감소합니다.&lt;/p&gt;
&lt;p data-end=&quot;845&quot; data-start=&quot;805&quot; data-ke-size=&quot;size16&quot;&gt;대부분의 신규 유저가 첫 방문 이후 다시 돌아오지 않는 구조입니다.&lt;/p&gt;
&lt;p data-end=&quot;845&quot; data-start=&quot;805&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;878&quot; data-start=&quot;852&quot; data-section-id=&quot;kxaiix&quot; data-ke-size=&quot;size20&quot;&gt;3. 서비스의 핵심 과제는 &amp;ldquo;재방문 유도&amp;rdquo;&lt;/h4&gt;
&lt;p data-end=&quot;906&quot; data-start=&quot;880&quot; data-ke-size=&quot;size16&quot;&gt;이번 분석에서 중요한 점은 단순 유입 증가보다 &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;신규 유저를 Returning User로 전환시키는 전략&lt;/span&gt;이 훨씬 중요하다는 점입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1032&quot; data-start=&quot;969&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;978&quot; data-start=&quot;969&quot; data-section-id=&quot;as7gd7&quot;&gt;첫 구매 쿠폰&lt;/li&gt;
&lt;li data-end=&quot;991&quot; data-start=&quot;979&quot; data-section-id=&quot;1vh8t1p&quot;&gt;관심 상품 리마인드&lt;/li&gt;
&lt;li data-end=&quot;1006&quot; data-start=&quot;992&quot; data-section-id=&quot;1nd1z09&quot;&gt;장바구니 리텐션 캠페인&lt;/li&gt;
&lt;li data-end=&quot;1020&quot; data-start=&quot;1007&quot; data-section-id=&quot;bgoaqm&quot;&gt;이메일/푸시 리마케팅&lt;/li&gt;
&lt;li data-end=&quot;1032&quot; data-start=&quot;1021&quot; data-section-id=&quot;1pfi2nt&quot;&gt;추천 상품 개인화&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1057&quot; data-start=&quot;1034&quot; data-ke-size=&quot;size16&quot;&gt;같은 전략이 핵심 액션이 될 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;시각화&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1289&quot; data-origin-height=&quot;1424&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DLcjm/dJMcafs93b5/BkKJ5qkLlY5w4vNHEyyMFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DLcjm/dJMcafs93b5/BkKJ5qkLlY5w4vNHEyyMFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DLcjm/dJMcafs93b5/BkKJ5qkLlY5w4vNHEyyMFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDLcjm%2FdJMcafs93b5%2FBkKJ5qkLlY5w4vNHEyyMFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1289&quot; height=&quot;1424&quot; data-origin-width=&quot;1289&quot; data-origin-height=&quot;1424&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Returning User는 New User 대비 훨씬 높은 리텐션을 보였으며, 이미 서비스 경험이 있는 사용자가 반복 방문 가능성이 높다는 점을 확인할 수 있었다. 반면 신규 유저는 첫 방문 이후 빠르게 이탈하는 경향을 보였고, 이는 초기 경험 개선 및 재방문 유도 전략의 중요성을 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/GA4 분석</category>
      <author>조성호</author>
      <guid isPermaLink="true">https://jshdata0794.tistory.com/27</guid>
      <comments>https://jshdata0794.tistory.com/27#entry27comment</comments>
      <pubDate>Fri, 22 May 2026 21:44:42 +0900</pubDate>
    </item>
    <item>
      <title>[GA4 코호트 분석] Day9-4 코호트 리텐션 분석 (Source/Medium 리텐션 비교 분석)</title>
      <link>https://jshdata0794.tistory.com/26</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;ldquo;어떤 유입 채널이 오래 유지되는 유저를 데려오는가?&amp;rdquo;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;339&quot; data-start=&quot;310&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;319&quot; data-start=&quot;310&quot; data-section-id=&quot;egfun1&quot;&gt;재방문 유지율&lt;/li&gt;
&lt;li data-end=&quot;331&quot; data-start=&quot;320&quot; data-section-id=&quot;1tj0o6h&quot;&gt;장기 유지 가능성&lt;/li&gt;
&lt;li data-end=&quot;339&quot; data-start=&quot;332&quot; data-section-id=&quot;10l528s&quot;&gt;채널 품질&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SQL&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 첫 방문 유저 + 첫 유입채널 확인&lt;/p&gt;
&lt;pre id=&quot;code_1779446710637&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Step 1. 유저별 첫 방문 주차와 첫 유입 채널 확인

WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS cohort_week,
    CONCAT(
      COALESCE(traffic_source.source, 'unknown'),
      ' / ',
      COALESCE(traffic_source.medium, 'unknown')
    ) AS source_medium,
    ROW_NUMBER() OVER (
      PARTITION BY user_pseudo_id
      ORDER BY event_timestamp
    ) AS rn
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
)

SELECT
  user_pseudo_id,
  cohort_week,
  source_medium
FROM first_session
WHERE rn = 1
LIMIT 100;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2163&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1z2VQ/dJMcabYDmm0/gggJDfbpyvilnlHipQ5r81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1z2VQ/dJMcabYDmm0/gggJDfbpyvilnlHipQ5r81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1z2VQ/dJMcabYDmm0/gggJDfbpyvilnlHipQ5r81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1z2VQ%2FdJMcabYDmm0%2FgggJDfbpyvilnlHipQ5r81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2163&quot; height=&quot;541&quot; data-origin-width=&quot;2163&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Source / Medium별 유입 유저 수 확인&lt;/p&gt;
&lt;pre id=&quot;code_1779446720130&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Step 2. Source / Medium별 최초 유입 유저 수 확인

WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS cohort_week,
    CONCAT(
      COALESCE(traffic_source.source, 'unknown'),
      ' / ',
      COALESCE(traffic_source.medium, 'unknown')
    ) AS source_medium,
    ROW_NUMBER() OVER (
      PARTITION BY user_pseudo_id
      ORDER BY event_timestamp
    ) AS rn
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
)

SELECT
  source_medium,
  COUNT(DISTINCT user_pseudo_id) AS users
FROM first_session
WHERE rn = 1
GROUP BY source_medium
ORDER BY users DESC;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2161&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zUxGc/dJMcah5CPpE/AZk3LTl8WxSikoDkjuFQs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zUxGc/dJMcah5CPpE/AZk3LTl8WxSikoDkjuFQs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zUxGc/dJMcah5CPpE/AZk3LTl8WxSikoDkjuFQs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzUxGc%2FdJMcah5CPpE%2FAZk3LTl8WxSikoDkjuFQs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2161&quot; height=&quot;541&quot; data-origin-width=&quot;2161&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 주차별 활동 이력 확인&lt;/p&gt;
&lt;pre id=&quot;code_1779446727338&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Step 3. 유저별 주차별 활동 이력 확인

SELECT DISTINCT
  user_pseudo_id,
  DATE_TRUNC(
    DATE(TIMESTAMP_MICROS(event_timestamp)),
    WEEK
  ) AS activity_week
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE event_name = 'session_start'
ORDER BY
  user_pseudo_id,
  activity_week
LIMIT 100;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2158&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSkE3D/dJMcagS986V/NViuZTnqoKGoquy5KetpsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSkE3D/dJMcagS986V/NViuZTnqoKGoquy5KetpsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSkE3D/dJMcagS986V/NViuZTnqoKGoquy5KetpsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSkE3D%2FdJMcagS986V%2FNViuZTnqoKGoquy5KetpsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2158&quot; height=&quot;480&quot; data-origin-width=&quot;2158&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. Source / Medium별 코호트 크기 계산&lt;/p&gt;
&lt;pre id=&quot;code_1779446733571&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Step 4. source_medium + cohort_week별 코호트 유저 수 계산

WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS cohort_week,
    CONCAT(
      COALESCE(traffic_source.source, 'unknown'),
      ' / ',
      COALESCE(traffic_source.medium, 'unknown')
    ) AS source_medium,
    ROW_NUMBER() OVER (
      PARTITION BY user_pseudo_id
      ORDER BY event_timestamp
    ) AS rn
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
)

SELECT
  cohort_week,
  source_medium,
  COUNT(DISTINCT user_pseudo_id) AS cohort_users
FROM first_session
WHERE rn = 1
GROUP BY
  cohort_week,
  source_medium
ORDER BY
  cohort_week,
  cohort_users DESC;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2157&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OGufv/dJMcahLiwQu/SkJBXaqXbuGlMm6Tum3q7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OGufv/dJMcahLiwQu/SkJBXaqXbuGlMm6Tum3q7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OGufv/dJMcahLiwQu/SkJBXaqXbuGlMm6Tum3q7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOGufv%2FdJMcahLiwQu%2FSkJBXaqXbuGlMm6Tum3q7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2157&quot; height=&quot;487&quot; data-origin-width=&quot;2157&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. Source / Medium별 retained_users 계산&lt;/p&gt;
&lt;pre id=&quot;code_1779446740321&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Step 5. Source / Medium별 주차별 재방문 유저 수 계산

WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS cohort_week,
    CONCAT(
      COALESCE(traffic_source.source, 'unknown'),
      ' / ',
      COALESCE(traffic_source.medium, 'unknown')
    ) AS source_medium,
    ROW_NUMBER() OVER (
      PARTITION BY user_pseudo_id
      ORDER BY event_timestamp
    ) AS rn
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
),

first_user AS (
  SELECT
    user_pseudo_id,
    cohort_week,
    source_medium
  FROM first_session
  WHERE rn = 1
),

user_activity AS (
  SELECT DISTINCT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS activity_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
)

SELECT
  f.cohort_week,
  f.source_medium,
  DATE_DIFF(a.activity_week, f.cohort_week, WEEK) AS week_number,
  COUNT(DISTINCT a.user_pseudo_id) AS retained_users
FROM first_user f
JOIN user_activity a
  ON f.user_pseudo_id = a.user_pseudo_id
WHERE DATE_DIFF(a.activity_week, f.cohort_week, WEEK) &amp;gt;= 0
GROUP BY
  f.cohort_week,
  f.source_medium,
  week_number
ORDER BY
  f.cohort_week,
  f.source_medium,
  week_number;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2158&quot; data-origin-height=&quot;487&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nwYsy/dJMcaiXF1wy/mMvQegCuds30eu8bRWxxWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nwYsy/dJMcaiXF1wy/mMvQegCuds30eu8bRWxxWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nwYsy/dJMcaiXF1wy/mMvQegCuds30eu8bRWxxWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnwYsy%2FdJMcaiXF1wy%2FmMvQegCuds30eu8bRWxxWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2158&quot; height=&quot;487&quot; data-origin-width=&quot;2158&quot; data-origin-height=&quot;487&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 최종 리텐션율 계산&lt;/p&gt;
&lt;pre id=&quot;code_1779446748309&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- Step 6. Source / Medium별 최종 리텐션율 계산

WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS cohort_week,
    CONCAT(
      COALESCE(traffic_source.source, 'unknown'),
      ' / ',
      COALESCE(traffic_source.medium, 'unknown')
    ) AS source_medium,
    ROW_NUMBER() OVER (
      PARTITION BY user_pseudo_id
      ORDER BY event_timestamp
    ) AS rn
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
),

first_user AS (
  SELECT
    user_pseudo_id,
    cohort_week,
    source_medium
  FROM first_session
  WHERE rn = 1
),

user_activity AS (
  SELECT DISTINCT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS activity_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
),

cohort_size AS (
  SELECT
    cohort_week,
    source_medium,
    COUNT(DISTINCT user_pseudo_id) AS cohort_users
  FROM first_user
  GROUP BY
    cohort_week,
    source_medium
),

retention AS (
  SELECT
    f.cohort_week,
    f.source_medium,
    DATE_DIFF(a.activity_week, f.cohort_week, WEEK) AS week_number,
    COUNT(DISTINCT a.user_pseudo_id) AS retained_users
  FROM first_user f
  JOIN user_activity a
    ON f.user_pseudo_id = a.user_pseudo_id
  WHERE DATE_DIFF(a.activity_week, f.cohort_week, WEEK) &amp;gt;= 0
  GROUP BY
    f.cohort_week,
    f.source_medium,
    week_number
)

SELECT
  r.cohort_week,
  r.source_medium,
  r.week_number,
  c.cohort_users,
  r.retained_users,
  ROUND(r.retained_users / c.cohort_users * 100, 2) AS retention_rate
FROM retention r
JOIN cohort_size c
  ON r.cohort_week = c.cohort_week
  AND r.source_medium = c.source_medium
WHERE r.week_number &amp;lt;= 8
ORDER BY
  r.cohort_week,
  r.source_medium,
  r.week_number;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kFsvB/dJMcadPA3CR/FVMllOKxqwEjsyWhy03Xu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kFsvB/dJMcadPA3CR/FVMllOKxqwEjsyWhy03Xu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kFsvB/dJMcadPA3CR/FVMllOKxqwEjsyWhy03Xu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkFsvB%2FdJMcadPA3CR%2FFVMllOKxqwEjsyWhy03Xu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2154&quot; height=&quot;474&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;474&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과 해석&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; width=&quot;108.00pt;&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;source_medium&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Week1 평균 리텐션&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;google / organic&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약 3~4%&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;direct / none&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약 3~4%&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;google / cpc&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약 3~4%&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 방문 이후 다음 주 재방문 비율은 매우 낮게 나타났습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;유입은 발생하지만 장기 유지로 연결되기는 어렵다&amp;rdquo;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Organic 채널은 이후 주차에서도 일정 수준 유지되는 흐름이 나타남&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1011&quot; data-start=&quot;979&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;997&quot; data-start=&quot;979&quot; data-section-id=&quot;ih58fl&quot;&gt;google / organic&lt;/li&gt;
&lt;li data-end=&quot;1011&quot; data-start=&quot;998&quot; data-section-id=&quot;11kmjoh&quot;&gt;referral 계열&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1051&quot; data-start=&quot;1048&quot; data-ke-size=&quot;size16&quot;&gt;유저가 상대적으로 관심도가 높을 가능성을 보여줌&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1077&quot; data-start=&quot;1053&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1063&quot; data-start=&quot;1053&quot; data-section-id=&quot;1lzsu24&quot;&gt;검색 기반 유입&lt;/li&gt;
&lt;li data-end=&quot;1077&quot; data-start=&quot;1064&quot; data-section-id=&quot;aggrjp&quot;&gt;외부 추천 기반 유입&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1108&quot; data-start=&quot;1079&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;1236&quot; data-start=&quot;1201&quot; data-ke-size=&quot;size20&quot;&gt;(direct) / (none) 채널은 유입 규모는 컸지만 Week1 이후 빠르게 감소하는 흐름이 나타났습니다.&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1291&quot; data-start=&quot;1275&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1282&quot; data-start=&quot;1275&quot; data-section-id=&quot;1umm9jh&quot;&gt;단순 방문&lt;/li&gt;
&lt;li data-end=&quot;1291&quot; data-start=&quot;1283&quot; data-section-id=&quot;2wo6g4&quot;&gt;일회성 접근&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1330&quot; data-start=&quot;1321&quot; data-section-id=&quot;pksxhj&quot; data-ke-size=&quot;size23&quot;&gt;핵심 인사이트&lt;/h3&gt;
&lt;p data-end=&quot;1330&quot; data-start=&quot;1321&quot; data-section-id=&quot;pksxhj&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-size: 16px; letter-spacing: 0px;&quot;&gt;유입량이 많은 채널과 &lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 16px; letter-spacing: 0px;&quot;&gt;오래 유지되는 유저를 데려오는 채널은 다를 수 있다 &lt;/span&gt;는 점을 확인할 수 있었습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1437&quot; data-start=&quot;1419&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1429&quot; data-start=&quot;1419&quot; data-section-id=&quot;7knra1&quot;&gt;단순 트래픽 수&lt;/li&gt;
&lt;li data-end=&quot;1437&quot; data-start=&quot;1430&quot; data-section-id=&quot;9gknm9&quot;&gt;방문자 수&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1457&quot; data-start=&quot;1439&quot; data-ke-size=&quot;size16&quot;&gt;만으로 채널 성과를 평가하기보다&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1480&quot; data-start=&quot;1459&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1464&quot; data-start=&quot;1459&quot; data-section-id=&quot;1yvax8&quot;&gt;리텐션&lt;/li&gt;
&lt;li data-end=&quot;1471&quot; data-start=&quot;1465&quot; data-section-id=&quot;dly5vh&quot;&gt;재방문율&lt;/li&gt;
&lt;li data-end=&quot;1480&quot; data-start=&quot;1472&quot; data-section-id=&quot;fhpar9&quot;&gt;장기 유지율&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1511&quot; data-start=&quot;1482&quot; data-ke-size=&quot;size16&quot;&gt;까지 함께 고려하는 것이 중요하다고 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;시각화&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;1420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDVrs8/dJMcafNwze8/D3rHkA7T4QYxAnghRZCA91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDVrs8/dJMcafNwze8/D3rHkA7T4QYxAnghRZCA91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDVrs8/dJMcafNwze8/D3rHkA7T4QYxAnghRZCA91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDVrs8%2FdJMcafNwze8%2FD3rHkA7T4QYxAnghRZCA91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1288&quot; height=&quot;1420&quot; data-origin-width=&quot;1288&quot; data-origin-height=&quot;1420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Source / Medium별 리텐션을 비교한 결과 대부분의 유입 채널은 Week1 이후 빠르게 감소하는 흐름을 보였습니다. 다만 referral 및 organic 기반 유입은 상대적으로 안정적인 유지 패턴을 보였으며, 단순 direct 유입보다 재방문 유지 가능성이 높게 나타났습니다. 이를 통해 채널 성과는 단순 유입 수뿐 아니라 장기 리텐션까지 함께 고려해야 함을 확인할 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;최종 결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;유입량이 많은 채널과 오래 유지되는 유저를 데려오는 채널은 다를 수 있음을 확인했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;3068&quot; data-start=&quot;3064&quot; data-ke-size=&quot;size16&quot;&gt;따라서 &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;마케팅 채널 평가는 단순 방문 수뿐 아니라 리텐션까지 함께 고려해야 한다고 생각합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/GA4 분석</category>
      <author>조성호</author>
      <guid isPermaLink="true">https://jshdata0794.tistory.com/26</guid>
      <comments>https://jshdata0794.tistory.com/26#entry26comment</comments>
      <pubDate>Fri, 22 May 2026 20:14:03 +0900</pubDate>
    </item>
    <item>
      <title>[GA4 코호트 분석] Day9-3 코호트 리텐션 분석 (Purchase vs Non-Purchase 리텐션 비교 분석)</title>
      <link>https://jshdata0794.tistory.com/25</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&quot;구매 유저가 더 오래 남는가?&quot;&lt;/h4&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;가설&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구매 경험이 있는 유저는 비구매&amp;nbsp;유저보다&amp;nbsp;리텐션이&amp;nbsp;높을&amp;nbsp;것이다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; width=&quot;108.00pt;&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그룹&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기준&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Purchase User&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;purchase 이벤트 경험 있음&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Non-Purchase User&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;purchase 이벤트 없음&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SQL&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 유저별 구매 여부 정의&lt;/p&gt;
&lt;pre id=&quot;code_1779369180609&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 유저별 구매 경험 여부 확인

SELECT
  user_pseudo_id,

  -- purchase 이벤트가 1번 이상 있으면 Purchase User
  CASE
    WHEN COUNTIF(event_name = 'purchase') &amp;gt; 0 THEN 'Purchase User'
    ELSE 'Non-Purchase User'
  END AS user_group

FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

GROUP BY user_pseudo_id

LIMIT 100;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ydb69/dJMcagexma4/twiUnbS1bdU0xLUGeSL3e0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ydb69/dJMcagexma4/twiUnbS1bdU0xLUGeSL3e0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ydb69/dJMcagexma4/twiUnbS1bdU0xLUGeSL3e0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYdb69%2FdJMcagexma4%2FtwiUnbS1bdU0xLUGeSL3e0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2154&quot; height=&quot;542&quot; data-origin-width=&quot;2154&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 유저별 최초 방문 주차 만들기&lt;/p&gt;
&lt;pre id=&quot;code_1779369224842&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 유저별 최초 방문 주차 계산

SELECT
  user_pseudo_id,

  DATE_TRUNC(
    MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
    WEEK
  ) AS cohort_week

FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

WHERE event_name = 'session_start'

GROUP BY user_pseudo_id

LIMIT 100;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2166&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PVzMm/dJMcaiXE7Gq/pkIMs1LwBbIh0cbeFu9d4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PVzMm/dJMcaiXE7Gq/pkIMs1LwBbIh0cbeFu9d4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PVzMm/dJMcaiXE7Gq/pkIMs1LwBbIh0cbeFu9d4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPVzMm%2FdJMcaiXE7Gq%2FpkIMs1LwBbIh0cbeFu9d4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2166&quot; height=&quot;548&quot; data-origin-width=&quot;2166&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 유저별 활동 주차 만들기&lt;/p&gt;
&lt;pre id=&quot;code_1779369256472&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 유저별 활동 주차 계산

SELECT DISTINCT
  user_pseudo_id,

  DATE_TRUNC(
    DATE(TIMESTAMP_MICROS(event_timestamp)),
    WEEK
  ) AS activity_week

FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

WHERE event_name = 'session_start'

LIMIT 100;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2162&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AnrVm/dJMcaffFoQ6/RLPpG8TlI5Zrdhq8M0lGf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AnrVm/dJMcaffFoQ6/RLPpG8TlI5Zrdhq8M0lGf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AnrVm/dJMcaffFoQ6/RLPpG8TlI5Zrdhq8M0lGf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAnrVm%2FdJMcaffFoQ6%2FRLPpG8TlI5Zrdhq8M0lGf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2162&quot; height=&quot;542&quot; data-origin-width=&quot;2162&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 구매 여부별 리텐션 유저 수 계산&lt;/p&gt;
&lt;pre id=&quot;code_1779369277316&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 구매 유저 vs 비구매 유저의 주차별 활동 유저 수 계산

WITH user_group AS (
  SELECT
    user_pseudo_id,

    CASE
      WHEN COUNTIF(event_name = 'purchase') &amp;gt; 0 THEN 'Purchase User'
      ELSE 'Non-Purchase User'
    END AS user_group

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

  GROUP BY user_pseudo_id
),

first_session AS (
  SELECT
    user_pseudo_id,

    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

  WHERE event_name = 'session_start'

  GROUP BY user_pseudo_id
),

user_activity AS (
  SELECT DISTINCT
    user_pseudo_id,

    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS activity_week

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

  WHERE event_name = 'session_start'
)

SELECT
  g.user_group,
  f.cohort_week,

  -- 최초 방문 후 몇 주차 활동인지 계산
  DATE_DIFF(a.activity_week, f.cohort_week, WEEK) AS week_number,

  COUNT(DISTINCT a.user_pseudo_id) AS active_users

FROM first_session f

JOIN user_activity a
  ON f.user_pseudo_id = a.user_pseudo_id

JOIN user_group g
  ON f.user_pseudo_id = g.user_pseudo_id

GROUP BY
  g.user_group,
  f.cohort_week,
  week_number

ORDER BY
  g.user_group,
  f.cohort_week,
  week_number;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCJQvM/dJMcacb7U4t/MOtGge4HDCB3VLPZWj2BK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCJQvM/dJMcacb7U4t/MOtGge4HDCB3VLPZWj2BK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCJQvM/dJMcacb7U4t/MOtGge4HDCB3VLPZWj2BK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCJQvM%2FdJMcacb7U4t%2FMOtGge4HDCB3VLPZWj2BK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2160&quot; height=&quot;538&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 최종 리텐션율 계산&lt;/p&gt;
&lt;pre id=&quot;code_1779369309588&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 구매 유저 vs 비구매 유저 리텐션율 계산

WITH user_group AS (
  SELECT
    user_pseudo_id,

    CASE
      WHEN COUNTIF(event_name = 'purchase') &amp;gt; 0 THEN 'Purchase User'
      ELSE 'Non-Purchase User'
    END AS user_group

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

  GROUP BY user_pseudo_id
),

first_session AS (
  SELECT
    user_pseudo_id,

    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

  WHERE event_name = 'session_start'

  GROUP BY user_pseudo_id
),

user_activity AS (
  SELECT DISTINCT
    user_pseudo_id,

    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS activity_week

  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

  WHERE event_name = 'session_start'
),

retention AS (
  SELECT
    g.user_group,
    f.cohort_week,

    DATE_DIFF(a.activity_week, f.cohort_week, WEEK) AS week_number,

    COUNT(DISTINCT a.user_pseudo_id) AS active_users

  FROM first_session f

  JOIN user_activity a
    ON f.user_pseudo_id = a.user_pseudo_id

  JOIN user_group g
    ON f.user_pseudo_id = g.user_pseudo_id

  GROUP BY
    g.user_group,
    f.cohort_week,
    week_number
),

cohort_size AS (
  SELECT
    user_group,
    cohort_week,

    -- 각 그룹/코호트의 Week0 유저 수
    active_users AS cohort_users

  FROM retention

  WHERE week_number = 0
)

SELECT
  r.user_group,
  r.cohort_week,
  r.week_number,
  r.active_users,
  c.cohort_users,

  -- 리텐션율 계산
  ROUND(r.active_users / c.cohort_users * 100, 2) AS retention_rate

FROM retention r

JOIN cohort_size c
  ON r.user_group = c.user_group
 AND r.cohort_week = c.cohort_week

ORDER BY
  r.user_group,
  r.cohort_week,
  r.week_number;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2174&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ExKi3/dJMb99NculH/nDwHWybBbE57RILGcgsJ91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ExKi3/dJMb99NculH/nDwHWybBbE57RILGcgsJ91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ExKi3/dJMb99NculH/nDwHWybBbE57RILGcgsJ91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FExKi3%2FdJMb99NculH%2FnDwHWybBbE57RILGcgsJ91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2174&quot; height=&quot;550&quot; data-origin-width=&quot;2174&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;분석&amp;nbsp;해석&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분석&amp;nbsp;결과,&amp;nbsp;구매&amp;nbsp;유저는&amp;nbsp;비구매&amp;nbsp;유저보다&amp;nbsp;전반적으로&amp;nbsp;더&amp;nbsp;높은&amp;nbsp;리텐션을&amp;nbsp;보이는&amp;nbsp;경향이&amp;nbsp;나타났습니다.&amp;nbsp;이는&amp;nbsp;구매&amp;nbsp;경험이&amp;nbsp;단순한&amp;nbsp;결제&amp;nbsp;이벤트가&amp;nbsp;아니라,&amp;nbsp;유저의&amp;nbsp;서비스&amp;nbsp;몰입도와&amp;nbsp;재방문&amp;nbsp;가능성을&amp;nbsp;높이는&amp;nbsp;신호로&amp;nbsp;해석될&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;반면&amp;nbsp;비구매&amp;nbsp;유저는&amp;nbsp;첫&amp;nbsp;방문&amp;nbsp;이후&amp;nbsp;빠르게&amp;nbsp;이탈하는&amp;nbsp;비중이&amp;nbsp;높아,&amp;nbsp;구매&amp;nbsp;경험&amp;nbsp;여부에&amp;nbsp;따라&amp;nbsp;유지율&amp;nbsp;차이가&amp;nbsp;발생하는&amp;nbsp;것으로&amp;nbsp;보입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서&amp;nbsp;이번&amp;nbsp;데이터는&amp;nbsp;&amp;ldquo;구매&amp;nbsp;경험이&amp;nbsp;있는&amp;nbsp;유저가&amp;nbsp;비구매&amp;nbsp;유저보다&amp;nbsp;리텐션이&amp;nbsp;높을&amp;nbsp;것이다&amp;rdquo;라는&amp;nbsp;가설을&amp;nbsp;어느&amp;nbsp;정도&amp;nbsp;지지합니다.&amp;nbsp;다만&amp;nbsp;구매&amp;nbsp;자체가&amp;nbsp;리텐션을&amp;nbsp;직접&amp;nbsp;만든다기보다,&amp;nbsp;이미&amp;nbsp;서비스에&amp;nbsp;관심이&amp;nbsp;높거나&amp;nbsp;만족도가&amp;nbsp;높은&amp;nbsp;유저가&amp;nbsp;구매로&amp;nbsp;이어졌을&amp;nbsp;가능성도&amp;nbsp;함께&amp;nbsp;고려해야&amp;nbsp;합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;액션&amp;nbsp;인사이트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로는&amp;nbsp;구매&amp;nbsp;유저의&amp;nbsp;재방문을&amp;nbsp;더&amp;nbsp;강화할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;구매&amp;nbsp;후&amp;nbsp;CRM과&amp;nbsp;리마인드&amp;nbsp;전략을&amp;nbsp;설계해야&amp;nbsp;합니다.&amp;nbsp;동시에&amp;nbsp;비구매&amp;nbsp;유저가&amp;nbsp;첫&amp;nbsp;방문&amp;nbsp;이후&amp;nbsp;이탈하지&amp;nbsp;않도록&amp;nbsp;온보딩,&amp;nbsp;리타겟팅,&amp;nbsp;첫&amp;nbsp;행동&amp;nbsp;유도&amp;nbsp;장치를&amp;nbsp;보완할&amp;nbsp;필요가&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;1425&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTBjQ4/dJMcacXvvmg/n9az6z5ZzA2pe7YoVeIWsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTBjQ4/dJMcacXvvmg/n9az6z5ZzA2pe7YoVeIWsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTBjQ4/dJMcacXvvmg/n9az6z5ZzA2pe7YoVeIWsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTBjQ4%2FdJMcacXvvmg%2Fn9az6z5ZzA2pe7YoVeIWsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1292&quot; height=&quot;1425&quot; data-origin-width=&quot;1292&quot; data-origin-height=&quot;1425&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1322&quot; data-start=&quot;1257&quot; data-section-id=&quot;3rbxq8&quot;&gt;구매 유저의 평균 리텐션율은 11.77%로 나타났으며, 비구매 유저(1.13%) 대비 약 10배 이상 높게 유지됨&lt;/li&gt;
&lt;li data-end=&quot;1355&quot; data-start=&quot;1323&quot; data-section-id=&quot;9oe5dg&quot;&gt;특히 초기 1~3주차 구간에서 리텐션 차이가 크게 발생&lt;/li&gt;
&lt;li data-end=&quot;1401&quot; data-start=&quot;1356&quot; data-section-id=&quot;1m481ot&quot;&gt;구매 경험 자체가 장기 재방문 행동과 강하게 연결되는 핵심 행동으로 해석 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/GA4 분석</category>
      <author>조성호</author>
      <guid isPermaLink="true">https://jshdata0794.tistory.com/25</guid>
      <comments>https://jshdata0794.tistory.com/25#entry25comment</comments>
      <pubDate>Thu, 21 May 2026 22:38:38 +0900</pubDate>
    </item>
    <item>
      <title>[GA4 코호트 분석] Day9-2 코호트 리텐션 분석 (신규 유저 재방문율 구조화)</title>
      <link>https://jshdata0794.tistory.com/23</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;각 cohort_week에 유입된 신규 유저가 1주차, 2주차, 3주차&amp;hellip;에 얼마나 다시 방문했는가?&lt;/h4&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SQL&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 유저별 첫 방문 주차 확인&lt;/h4&gt;
&lt;pre id=&quot;code_1779011027043&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 1. 각 유저가 처음 방문한 주차를 구한다.
-- cohort_week = 해당 유저가 처음 session_start를 발생시킨 주차

SELECT
  user_pseudo_id,
  DATE_TRUNC(
    MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
    WEEK
  ) AS cohort_week
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE event_name = 'session_start'
GROUP BY user_pseudo_id
ORDER BY cohort_week
LIMIT 100;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2158&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JkBnY/dJMcaiQRCPQ/zBiOgUqvBUtYjIk9QgbWQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JkBnY/dJMcaiQRCPQ/zBiOgUqvBUtYjIk9QgbWQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JkBnY/dJMcaiQRCPQ/zBiOgUqvBUtYjIk9QgbWQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJkBnY%2FdJMcaiQRCPQ%2FzBiOgUqvBUtYjIk9QgbWQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2158&quot; height=&quot;540&quot; data-origin-width=&quot;2158&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 주차별 신규 유저 수 확인&lt;/h4&gt;
&lt;pre id=&quot;code_1779011076566&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 2. cohort_week별 신규 유저 수를 집계한다.
-- Part1에서 만든 주차별 신규 유저 규모와 같은 개념

WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id
)

SELECT
  cohort_week,
  COUNT(DISTINCT user_pseudo_id) AS cohort_users
FROM first_session
GROUP BY cohort_week
ORDER BY cohort_week;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bloGvs/dJMcajhWaki/3ZsKWW1PQ9X7hTDa0rzK3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bloGvs/dJMcajhWaki/3ZsKWW1PQ9X7hTDa0rzK3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bloGvs/dJMcajhWaki/3ZsKWW1PQ9X7hTDa0rzK3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbloGvs%2FdJMcajhWaki%2F3ZsKWW1PQ9X7hTDa0rzK3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2146&quot; height=&quot;550&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 유저별 활동 주차 확인&lt;/h4&gt;
&lt;pre id=&quot;code_1779011175101&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 3. 각 유저가 session_start를 발생시킨 활동 주차를 구한다.
-- activity_week = 유저가 실제로 방문한 주차

SELECT DISTINCT
  user_pseudo_id,
  DATE_TRUNC(
    DATE(TIMESTAMP_MICROS(event_timestamp)),
    WEEK
  ) AS activity_week
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE event_name = 'session_start'
ORDER BY user_pseudo_id, activity_week
LIMIT 100;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2144&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd5jXd/dJMcac4bOP1/KTq39E8EfUVB0KJq7TsZI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd5jXd/dJMcac4bOP1/KTq39E8EfUVB0KJq7TsZI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd5jXd/dJMcac4bOP1/KTq39E8EfUVB0KJq7TsZI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd5jXd%2FdJMcac4bOP1%2FKTq39E8EfUVB0KJq7TsZI0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2144&quot; height=&quot;550&quot; data-origin-width=&quot;2144&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. 첫 방문 주차와 활동 주차 연결&lt;/h4&gt;
&lt;pre id=&quot;code_1779011224996&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 4. 유저별 첫 방문 주차와 이후 활동 주차를 연결한다.
-- week_number = 첫 방문 이후 몇 주차에 다시 방문했는지

WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id
),

user_activity AS (
  SELECT DISTINCT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS activity_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
)

SELECT
  f.user_pseudo_id,
  f.cohort_week,
  a.activity_week,
  DATE_DIFF(a.activity_week, f.cohort_week, WEEK) AS week_number
FROM first_session f
JOIN user_activity a
  ON f.user_pseudo_id = a.user_pseudo_id
WHERE a.activity_week &amp;gt;= f.cohort_week
ORDER BY f.cohort_week, f.user_pseudo_id, week_number
LIMIT 100;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cp5hze/dJMcaiJ44KB/gaKtaXOkTqKIOuXk2EhiBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cp5hze/dJMcaiJ44KB/gaKtaXOkTqKIOuXk2EhiBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cp5hze/dJMcaiJ44KB/gaKtaXOkTqKIOuXk2EhiBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcp5hze%2FdJMcaiJ44KB%2FgaKtaXOkTqKIOuXk2EhiBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2156&quot; height=&quot;540&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5. 코호트별 주차별 활성 유저 수 집계&lt;/h4&gt;
&lt;pre id=&quot;code_1779011271605&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 5. cohort_week와 week_number별 active_users를 집계한다.
-- active_users = 해당 코호트에서 해당 주차에 다시 방문한 유저 수

WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id
),

user_activity AS (
  SELECT DISTINCT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS activity_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
)

SELECT
  f.cohort_week,
  DATE_DIFF(a.activity_week, f.cohort_week, WEEK) AS week_number,
  COUNT(DISTINCT a.user_pseudo_id) AS active_users
FROM first_session f
JOIN user_activity a
  ON f.user_pseudo_id = a.user_pseudo_id
WHERE a.activity_week &amp;gt;= f.cohort_week
GROUP BY
  f.cohort_week,
  week_number
ORDER BY
  f.cohort_week,
  week_number;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNpiOb/dJMcaaZCqPG/JMSRQ5PkQkhKQ4f34g7921/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNpiOb/dJMcaaZCqPG/JMSRQ5PkQkhKQ4f34g7921/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNpiOb/dJMcaaZCqPG/JMSRQ5PkQkhKQ4f34g7921/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNpiOb%2FdJMcaaZCqPG%2FJMSRQ5PkQkhKQ4f34g7921%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2156&quot; height=&quot;542&quot; data-origin-width=&quot;2156&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;6. 최종 리텐션율 계산&lt;/h4&gt;
&lt;pre id=&quot;code_1779011298263&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 6. 최종 리텐션율을 계산한다.
-- retention_rate = active_users / cohort_users * 100

WITH first_session AS (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id
),

user_activity AS (
  SELECT DISTINCT
    user_pseudo_id,
    DATE_TRUNC(
      DATE(TIMESTAMP_MICROS(event_timestamp)),
      WEEK
    ) AS activity_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
),

cohort_retention AS (
  SELECT
    f.cohort_week,
    DATE_DIFF(a.activity_week, f.cohort_week, WEEK) AS week_number,
    COUNT(DISTINCT a.user_pseudo_id) AS active_users
  FROM first_session f
  JOIN user_activity a
    ON f.user_pseudo_id = a.user_pseudo_id
  WHERE a.activity_week &amp;gt;= f.cohort_week
  GROUP BY
    f.cohort_week,
    week_number
),

cohort_size AS (
  SELECT
    cohort_week,
    COUNT(DISTINCT user_pseudo_id) AS cohort_users
  FROM first_session
  GROUP BY cohort_week
)

SELECT
  r.cohort_week,
  r.week_number,
  c.cohort_users,
  r.active_users,
  ROUND(r.active_users / c.cohort_users * 100, 2) AS retention_rate
FROM cohort_retention r
JOIN cohort_size c
  ON r.cohort_week = c.cohort_week
ORDER BY
  r.cohort_week,
  r.week_number;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kVLeA/dJMcajhWaq0/yLMnhGwchFIx6STtoTF3i1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kVLeA/dJMcajhWaq0/yLMnhGwchFIx6STtoTF3i1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kVLeA/dJMcajhWaq0/yLMnhGwchFIx6STtoTF3i1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkVLeA%2FdJMcajhWaq0%2FyLMnhGwchFIx6STtoTF3i1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2146&quot; height=&quot;544&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;105&quot; data-start=&quot;92&quot; data-section-id=&quot;1e36nh8&quot; data-ke-size=&quot;size23&quot;&gt;전체 구조 해석&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;218&quot; data-start=&quot;114&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;154&quot; data-start=&quot;114&quot; data-section-id=&quot;domyho&quot;&gt;week_number = 0 &amp;rarr; 첫 방문 주차 (무조건 100%)&lt;/li&gt;
&lt;li data-end=&quot;186&quot; data-start=&quot;155&quot; data-section-id=&quot;1s6hyru&quot;&gt;week_number = 1 &amp;rarr; 1주 뒤 재방문율&lt;/li&gt;
&lt;li data-end=&quot;218&quot; data-start=&quot;187&quot; data-section-id=&quot;1gin1uy&quot;&gt;week_number = 2 &amp;rarr; 2주 뒤 재방문율&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;271&quot; data-start=&quot;224&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;신규 유저 유입은 많지만, 다음 주 재방문율이 얼마나 유지되는지가 중요하다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;304&quot; data-start=&quot;278&quot; data-section-id=&quot;1xji7ob&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;304&quot; data-start=&quot;278&quot; data-section-id=&quot;1xji7ob&quot; data-ke-size=&quot;size23&quot;&gt;평균 리텐션 추이 (전체 코호트 평균)&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; width=&quot;108.00pt;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;주차&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;평균 리텐션&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Week0&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;100%&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Week1&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약 4.02%&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Week2&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약 1.80%&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Week3&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약 1.28%&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Week4&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;약 1.10%&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-end=&quot;500&quot; data-start=&quot;465&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;신규 유저의 약 96%가 첫 주 이후 다시 돌아오지 않음&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;545&quot; data-start=&quot;505&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;513&quot; data-start=&quot;505&quot; data-section-id=&quot;opv5ik&quot;&gt;유입은 발생&lt;/li&gt;
&lt;li data-end=&quot;545&quot; data-start=&quot;514&quot; data-section-id=&quot;1o6yez9&quot;&gt;첫 구매/첫 방문 이후 재방문 유지 실패 가능성 높음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;574&quot; data-start=&quot;552&quot; data-section-id=&quot;md12e&quot; data-ke-size=&quot;size23&quot;&gt;초기 코호트 특징 (11월 초)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;636&quot; data-start=&quot;583&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;609&quot; data-start=&quot;583&quot; data-section-id=&quot;1oqfrlb&quot;&gt;2020-11-01 &amp;rarr; Week1 6.26%&lt;/li&gt;
&lt;li data-end=&quot;636&quot; data-start=&quot;610&quot; data-section-id=&quot;yws0o1&quot;&gt;2020-11-08 &amp;rarr; Week1 6.56%&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;701&quot; data-start=&quot;645&quot; data-ke-size=&quot;size16&quot;&gt;초기 코호트는 상대적으로 리텐션이 높음&lt;br /&gt;&amp;rarr; 시즌성 / 초기 프로모션 / Holiday 영향 가능성&lt;/p&gt;
&lt;p data-end=&quot;731&quot; data-start=&quot;708&quot; data-section-id=&quot;exhprp&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;731&quot; data-start=&quot;708&quot; data-section-id=&quot;exhprp&quot; data-ke-size=&quot;size23&quot;&gt;후반 코호트 특징 (12월~1월)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;793&quot; data-start=&quot;740&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;766&quot; data-start=&quot;740&quot; data-section-id=&quot;a3pns2&quot;&gt;2020-12-20 &amp;rarr; Week1 2.49%&lt;/li&gt;
&lt;li data-end=&quot;793&quot; data-start=&quot;767&quot; data-section-id=&quot;12uekao&quot;&gt;2021-01-24 &amp;rarr; Week1 0.93%&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;817&quot; data-start=&quot;802&quot; data-ke-size=&quot;size16&quot;&gt;후반부로 갈수록 리텐션 급감&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;916&quot; data-start=&quot;830&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;846&quot; data-start=&quot;830&quot; data-section-id=&quot;abp1dn&quot;&gt;신규 유입 품질 저하&lt;/li&gt;
&lt;li data-end=&quot;864&quot; data-start=&quot;847&quot; data-section-id=&quot;zjokks&quot;&gt;프로모션 유입 후 이탈&lt;/li&gt;
&lt;li data-end=&quot;893&quot; data-start=&quot;865&quot; data-section-id=&quot;yrnhym&quot;&gt;첫 방문 경험은 있었지만 재방문 동기 부족&lt;/li&gt;
&lt;li data-end=&quot;916&quot; data-start=&quot;894&quot; data-section-id=&quot;mt68sg&quot;&gt;구매 이후 CRM/리마케팅 약함&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-end=&quot;946&quot; data-start=&quot;923&quot; data-section-id=&quot;184qdnl&quot; data-ke-size=&quot;size23&quot;&gt;핵심 인사이트&lt;/h3&gt;
&lt;p data-end=&quot;957&quot; data-start=&quot;948&quot; data-section-id=&quot;ial83v&quot; data-ke-size=&quot;size16&quot;&gt;현재 구조 : &amp;ldquo;Acquisition 중심&amp;rdquo;&lt;/p&gt;
&lt;p data-end=&quot;996&quot; data-start=&quot;979&quot; data-ke-size=&quot;size16&quot;&gt;유저는 들어오지만 유지되지 않음&lt;/p&gt;
&lt;p data-end=&quot;1013&quot; data-start=&quot;1003&quot; data-section-id=&quot;1oyg1pm&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1013&quot; data-start=&quot;1003&quot; data-section-id=&quot;1oyg1pm&quot; data-ke-size=&quot;size23&quot;&gt;필요한 액션&lt;/h3&gt;
&lt;p data-end=&quot;1039&quot; data-start=&quot;1014&quot; data-section-id=&quot;yyvkxs&quot; data-ke-size=&quot;size16&quot;&gt;CRM / Retention 전략 필요&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1104&quot; data-start=&quot;1040&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1050&quot; data-start=&quot;1040&quot; data-section-id=&quot;1g16v84&quot;&gt;이메일 리마인드&lt;/li&gt;
&lt;li data-end=&quot;1062&quot; data-start=&quot;1051&quot; data-section-id=&quot;18y3oej&quot;&gt;장바구니 리타겟팅&lt;/li&gt;
&lt;li data-end=&quot;1078&quot; data-start=&quot;1063&quot; data-section-id=&quot;1h7pfhe&quot;&gt;첫 구매 후 재방문 쿠폰&lt;/li&gt;
&lt;li data-end=&quot;1092&quot; data-start=&quot;1079&quot; data-section-id=&quot;1e7yw60&quot;&gt;추천 상품 UX 개선&lt;/li&gt;
&lt;li data-end=&quot;1104&quot; data-start=&quot;1093&quot; data-section-id=&quot;1gan7a8&quot;&gt;재방문 퍼널 구축&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1265&quot; data-start=&quot;1131&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;GA4 코호트 분석 결과, 신규 유저 유입 규모는 유지되었지만 평균 1주차 리텐션율은 약 4% 수준으로 매우 낮았으며, 대부분의 유저가 첫 방문 이후 재방문하지 않았다. 이는 유입보다 리텐션 구조 개선이 더 중요한 과제라고 생각한다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;시각화&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1782&quot; data-origin-height=&quot;1236&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYXYm0/dJMcaa6tUvC/f1Kk9SpgfAvkVg6FVNV3c0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYXYm0/dJMcaa6tUvC/f1Kk9SpgfAvkVg6FVNV3c0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYXYm0/dJMcaa6tUvC/f1Kk9SpgfAvkVg6FVNV3c0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYXYm0%2FdJMcaa6tUvC%2Ff1Kk9SpgfAvkVg6FVNV3c0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1782&quot; height=&quot;1236&quot; data-origin-width=&quot;1782&quot; data-origin-height=&quot;1236&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;대부분의 코호트가 Week1에서 급격히 감소하였고 시간이 지나며 6% &amp;rarr; 3% &amp;rarr; 2%와 같이 완만히 감소하였습니다. 즉, 첫 방문 이후 재방문 비율이 낮고 초기 이탈 후 일부 충성 유저만 유지 된다는 것을 알 수 있었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;후반 코호트 데이터가 짧은 이유는 데이터 수집 기간이 끝났기 때문입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/GA4 분석</category>
      <author>조성호</author>
      <guid isPermaLink="true">https://jshdata0794.tistory.com/23</guid>
      <comments>https://jshdata0794.tistory.com/23#entry23comment</comments>
      <pubDate>Sun, 17 May 2026 19:32:07 +0900</pubDate>
    </item>
    <item>
      <title>[GA4 코호트 분석] Day9-1 주차별 신규 유저 추이 분석 (리텐션 분석의 출발점)</title>
      <link>https://jshdata0794.tistory.com/22</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 코호트 분석은 &amp;ldquo;재방문했는가?&amp;rdquo;를 확인한 뒤, &amp;ldquo;왜 재방문했는가?&amp;rdquo;를 분석하는 방법&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 방문자 정의 &amp;rarr; 재방문율 계산 &amp;rarr; 리텐션 패턴 확인 &amp;rarr; 왜 남았는지/떠났는지 가설 설정 &amp;rarr; source, 행동, 구매, 카테고리별 검증 &amp;rarr; 원인 해석 &amp;rarr; CRM 전략 제안&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;누구를 첫 방문자로 볼 것인가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터 내에서 관측된 첫 방문&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;방문자 정의 단위&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- user_pseudo_id : 한 유저가 여러 번 방문해도 같은 사람으로 추적 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;시간 단위 선택&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Weekly Cohort : 주차별 비교 가능, 패턴 보기 좋음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; width=&quot;162.00pt;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;user&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;첫 방문일&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;cohort_week&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;A&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;11-03&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;11월 1주차&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;11-05&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;11월 1주차&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;C&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;11-12&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;11월 2주차&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SQL&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 각 user별 MIN(session_start) &amp;rarr; cohort_week 생성&lt;/p&gt;
&lt;pre id=&quot;code_1779007613030&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
  user_pseudo_id,
  MIN(DATE(TIMESTAMP_MICROS(event_timestamp))) AS first_visit_date,
  DATE_TRUNC(
    MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
    WEEK
  ) AS cohort_week
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE event_name = 'session_start'
GROUP BY user_pseudo_id
ORDER BY first_visit_date;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2152&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WEZLm/dJMcadhLbLK/bS1ck6oUy1TJacfIl2G6DK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WEZLm/dJMcadhLbLK/bS1ck6oUy1TJacfIl2G6DK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WEZLm/dJMcadhLbLK/bS1ck6oUy1TJacfIl2G6DK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWEZLm%2FdJMcadhLbLK%2FbS1ck6oUy1TJacfIl2G6DK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2152&quot; height=&quot;490&quot; data-origin-width=&quot;2152&quot; data-origin-height=&quot;490&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 우리 데이터는 어떤 주차에 신규 유저가 많았나?&lt;/p&gt;
&lt;pre id=&quot;code_1779007810485&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
  DATE_TRUNC(
    MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
    WEEK
  ) AS cohort_week,
  COUNT(DISTINCT user_pseudo_id) AS new_users
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE event_name = 'session_start'
GROUP BY user_pseudo_id
ORDER BY cohort_week;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xwz9O/dJMcahYJ3x0/WOMYE9G8NLAxr5kTSKlOJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xwz9O/dJMcahYJ3x0/WOMYE9G8NLAxr5kTSKlOJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xwz9O/dJMcahYJ3x0/WOMYE9G8NLAxr5kTSKlOJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXwz9O%2FdJMcahYJ3x0%2FWOMYE9G8NLAxr5kTSKlOJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2146&quot; height=&quot;482&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;482&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;2627&quot; data-start=&quot;2614&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2627&quot; data-start=&quot;2614&quot; data-ke-size=&quot;size16&quot;&gt;- cohort_week별 신규 유저 수는 어떻게 분포하는가?&lt;/p&gt;
&lt;pre id=&quot;code_1779009493645&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 주차별 신규 유저 규모 확인

SELECT
  cohort_week,
  COUNT(*) AS new_users
FROM (
  SELECT
    user_pseudo_id,
    DATE_TRUNC(
      MIN(DATE(TIMESTAMP_MICROS(event_timestamp))),
      WEEK
    ) AS cohort_week
  FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE event_name = 'session_start'
  GROUP BY user_pseudo_id
)
GROUP BY cohort_week
ORDER BY cohort_week;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2150&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWSDG5/dJMcagFAcfe/fLJlQa9uqXQZAksFLy8yQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWSDG5/dJMcagFAcfe/fLJlQa9uqXQZAksFLy8yQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWSDG5/dJMcagFAcfe/fLJlQa9uqXQZAksFLy8yQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWSDG5%2FdJMcagFAcfe%2FfLJlQa9uqXQZAksFLy8yQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2150&quot; height=&quot;550&quot; data-origin-width=&quot;2150&quot; data-origin-height=&quot;550&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-end=&quot;2627&quot; data-start=&quot;2614&quot; data-ke-size=&quot;size23&quot;&gt;결과 해석&lt;/h3&gt;
&lt;h4 data-end=&quot;476&quot; data-start=&quot;466&quot; data-section-id=&quot;fxwqn3&quot; data-ke-size=&quot;size20&quot;&gt;[11월 초]&lt;/h4&gt;
&lt;p data-end=&quot;514&quot; data-start=&quot;477&quot; data-section-id=&quot;1i8j5rn&quot; data-ke-size=&quot;size16&quot;&gt;19,894 &amp;rarr; 16,066 &amp;rarr; 17,703 &amp;rarr; 19,135 (비교적 안정적)&lt;/p&gt;
&lt;p data-end=&quot;552&quot; data-start=&quot;540&quot; data-section-id=&quot;1sbyqzb&quot; data-ke-size=&quot;size16&quot;&gt;기본 유입 구조&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;581&quot; data-start=&quot;553&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;570&quot; data-start=&quot;553&quot; data-section-id=&quot;dsh8bh&quot;&gt;안정적 acquisition&lt;/li&gt;
&lt;li data-end=&quot;581&quot; data-start=&quot;571&quot; data-section-id=&quot;mc924a&quot;&gt;큰 이벤트 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;603&quot; data-start=&quot;588&quot; data-section-id=&quot;qm2af9&quot; data-ke-size=&quot;size20&quot;&gt;[11월 말~12월 초]&lt;/h4&gt;
&lt;p data-end=&quot;628&quot; data-start=&quot;604&quot; data-section-id=&quot;mx2oxy&quot; data-ke-size=&quot;size16&quot;&gt;21,829 &amp;rarr; 27,750 (급증)&lt;/p&gt;
&lt;p data-end=&quot;672&quot; data-start=&quot;645&quot; data-section-id=&quot;s8xavx&quot; data-ke-size=&quot;size16&quot;&gt;12월 첫째 주(2020-12-06) 최고치&lt;/p&gt;
&lt;p data-end=&quot;689&quot; data-start=&quot;673&quot; data-section-id=&quot;1v1q19d&quot; data-ke-size=&quot;size16&quot;&gt;신규 유저 27,750&lt;/p&gt;
&lt;p data-end=&quot;705&quot; data-start=&quot;696&quot; data-section-id=&quot;cynblq&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;705&quot; data-start=&quot;696&quot; data-section-id=&quot;cynblq&quot; data-ke-size=&quot;size16&quot;&gt;가능 가설&lt;/p&gt;
&lt;p data-end=&quot;721&quot; data-start=&quot;706&quot; data-section-id=&quot;ul1j0k&quot; data-ke-size=&quot;size16&quot;&gt;1. 연말 쇼핑 시즌&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;754&quot; data-start=&quot;722&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;740&quot; data-start=&quot;722&quot; data-section-id=&quot;fmbzcy&quot;&gt;holiday shopping&lt;/li&gt;
&lt;li data-end=&quot;754&quot; data-start=&quot;741&quot; data-section-id=&quot;1t2r1xv&quot;&gt;gift demand&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;771&quot; data-start=&quot;756&quot; data-section-id=&quot;15zmv31&quot; data-ke-size=&quot;size16&quot;&gt;2. 프로모션/캠페인&lt;/p&gt;
&lt;p data-end=&quot;789&quot; data-start=&quot;772&quot; data-section-id=&quot;ivxdiy&quot; data-ke-size=&quot;size16&quot;&gt;3. 시즌성 트래픽 증가&lt;/p&gt;
&lt;p data-end=&quot;805&quot; data-start=&quot;796&quot; data-section-id=&quot;1ju8o0t&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;805&quot; data-start=&quot;796&quot; data-section-id=&quot;1ju8o0t&quot; data-ke-size=&quot;size16&quot;&gt;실무적 질문&lt;/p&gt;
&lt;p data-end=&quot;825&quot; data-start=&quot;806&quot; data-section-id=&quot;1g1goy5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;많이 왔는데, 잘 남았나?&amp;rdquo; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;rarr;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;12월 코호트 리텐션 중요&lt;/p&gt;
&lt;h4 data-end=&quot;867&quot; data-start=&quot;854&quot; data-section-id=&quot;xdspvu&quot; data-ke-size=&quot;size20&quot;&gt;[12월 중순 이후]&lt;/h4&gt;
&lt;p data-end=&quot;896&quot; data-start=&quot;868&quot; data-section-id=&quot;1d3b4yc&quot; data-ke-size=&quot;size16&quot;&gt;24,977 &amp;rarr; 17,663 &amp;rarr; 16,407 (감소)&lt;/p&gt;
&lt;p data-end=&quot;911&quot; data-start=&quot;906&quot; data-section-id=&quot;2g380l&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;929&quot; data-start=&quot;912&quot; data-section-id=&quot;rilod1&quot; data-ke-size=&quot;size16&quot;&gt;연말 peak 이후 감소&lt;/p&gt;
&lt;p data-end=&quot;942&quot; data-start=&quot;930&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 시즌성 유입 가능성&lt;/p&gt;
&lt;h4 data-end=&quot;957&quot; data-start=&quot;949&quot; data-section-id=&quot;1ewxr0t&quot; data-ke-size=&quot;size20&quot;&gt;[1월 초]&lt;/h4&gt;
&lt;p data-end=&quot;968&quot; data-start=&quot;958&quot; data-section-id=&quot;4nttis&quot; data-ke-size=&quot;size16&quot;&gt;22,592 (재상승)&lt;/p&gt;
&lt;p data-end=&quot;985&quot; data-start=&quot;979&quot; data-section-id=&quot;1xu6gh4&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;985&quot; data-start=&quot;979&quot; data-section-id=&quot;1xu6gh4&quot; data-ke-size=&quot;size16&quot;&gt;가능성&lt;/p&gt;
&lt;p data-end=&quot;1011&quot; data-start=&quot;986&quot; data-section-id=&quot;158575j&quot; data-ke-size=&quot;size16&quot;&gt;- 새해 프로모션 / 재유입 / 신규 시즌&lt;/p&gt;
&lt;h4 data-end=&quot;1030&quot; data-start=&quot;1018&quot; data-section-id=&quot;13ue9x4&quot; data-ke-size=&quot;size20&quot;&gt;[1월 마지막 주]&lt;/h4&gt;
&lt;p data-end=&quot;1045&quot; data-start=&quot;1031&quot; data-section-id=&quot;d5jncq&quot; data-ke-size=&quot;size16&quot;&gt;2,160 (급락)&lt;/p&gt;
&lt;p data-end=&quot;1074&quot; data-start=&quot;1058&quot; data-section-id=&quot;1ojd9yp&quot; data-ke-size=&quot;size16&quot;&gt;이건 실제 유입 급감보다&lt;/p&gt;
&lt;p data-end=&quot;1098&quot; data-start=&quot;1075&quot; data-section-id=&quot;180ovoh&quot; data-ke-size=&quot;size16&quot;&gt;데이터 종료 영향 가능성 매우 높음 (분석 왜곡 구간)&lt;/p&gt;
&lt;p data-end=&quot;1130&quot; data-start=&quot;1122&quot; data-section-id=&quot;tbnmvs&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1130&quot; data-start=&quot;1122&quot; data-section-id=&quot;tbnmvs&quot; data-ke-size=&quot;size16&quot;&gt;실무 처리&lt;/p&gt;
&lt;p data-end=&quot;1158&quot; data-start=&quot;1131&quot; data-section-id=&quot;edmvyb&quot; data-ke-size=&quot;size16&quot;&gt;2021-01-31 코호트는 제외 또는 주의 : 이후 Week1 추적 불가&lt;/p&gt;
&lt;p data-end=&quot;2627&quot; data-start=&quot;2614&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1202&quot; data-start=&quot;1190&quot; data-section-id=&quot;f85yu2&quot; data-ke-size=&quot;size23&quot;&gt;핵심 인사이트&lt;/h3&gt;
&lt;p data-end=&quot;1217&quot; data-start=&quot;1203&quot; data-section-id=&quot;1ssb0yf&quot; data-ke-size=&quot;size16&quot;&gt;가장 중요한 코호트 : 2020-12-06 (최대 유입)&lt;/p&gt;
&lt;p data-end=&quot;1268&quot; data-start=&quot;1253&quot; data-section-id=&quot;16ujhrc&quot; data-ke-size=&quot;size16&quot;&gt;유입 peak 코호트 &amp;rarr; 리텐션 비교 핵심&lt;/p&gt;
&lt;p data-end=&quot;1298&quot; data-start=&quot;1287&quot; data-section-id=&quot;ip89t&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1298&quot; data-start=&quot;1287&quot; data-section-id=&quot;ip89t&quot; data-ke-size=&quot;size16&quot;&gt;추천 비교 대상&lt;/p&gt;
&lt;p data-end=&quot;1298&quot; data-start=&quot;1287&quot; data-section-id=&quot;ip89t&quot; data-ke-size=&quot;size16&quot;&gt;2020-11-01 (baseline) vs 2020-12-06 (seasonal peak)&lt;/p&gt;
&lt;p data-end=&quot;1370&quot; data-start=&quot;1365&quot; data-section-id=&quot;2kixkc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1388&quot; data-start=&quot;1371&quot; data-section-id=&quot;2p41e4&quot; data-ke-size=&quot;size16&quot;&gt;연말 유입은 양만 많았나?&lt;/p&gt;
&lt;p data-end=&quot;1403&quot; data-start=&quot;1389&quot; data-section-id=&quot;1oo7yat&quot; data-ke-size=&quot;size16&quot;&gt;아니면 질도 좋았나?&lt;/p&gt;
&lt;h3 data-end=&quot;1422&quot; data-start=&quot;1410&quot; data-section-id=&quot;1arp170&quot; data-ke-size=&quot;size23&quot;&gt;비즈니스 관점&lt;/h3&gt;
&lt;p data-end=&quot;1437&quot; data-start=&quot;1428&quot; data-section-id=&quot;1jq5ctm&quot; data-ke-size=&quot;size16&quot;&gt;가능성 A : 신규 많음 + 리텐션 낮음 &amp;rarr; 단기 할인 유입&lt;/p&gt;
&lt;p data-end=&quot;1483&quot; data-start=&quot;1474&quot; data-section-id=&quot;1jq5cuh&quot; data-ke-size=&quot;size16&quot;&gt;가능성 B : 신규 많음 + 리텐션 높음 &amp;rarr; 고품질 시즌 유입&lt;/p&gt;
&lt;p data-end=&quot;1538&quot; data-start=&quot;1521&quot; data-section-id=&quot;1fyvlww&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;1538&quot; data-start=&quot;1521&quot; data-section-id=&quot;1fyvlww&quot; data-ke-size=&quot;size16&quot;&gt;여기서 코호트의 진짜 가치 : &amp;ldquo;유입량&amp;rdquo;보다&amp;ldquo;유입 질&amp;rdquo;&lt;/p&gt;
&lt;p data-end=&quot;2627&quot; data-start=&quot;2614&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2627&quot; data-start=&quot;2614&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;주차별 신규 유저 라인차트&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2088&quot; data-origin-height=&quot;1268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O3YU8/dJMcadII7cq/u1GrKcRvN27Cl8qapYjKR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O3YU8/dJMcadII7cq/u1GrKcRvN27Cl8qapYjKR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O3YU8/dJMcadII7cq/u1GrKcRvN27Cl8qapYjKR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO3YU8%2FdJMcadII7cq%2Fu1GrKcRvN27Cl8qapYjKR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2088&quot; height=&quot;1268&quot; data-origin-width=&quot;2088&quot; data-origin-height=&quot;1268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2021-01-31 제거&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2094&quot; data-origin-height=&quot;1254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3pk3N/dJMb99TWGN5/le5aurkKSmKpQHTmOR8vKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3pk3N/dJMb99TWGN5/le5aurkKSmKpQHTmOR8vKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3pk3N/dJMb99TWGN5/le5aurkKSmKpQHTmOR8vKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3pk3N%2FdJMb99TWGN5%2Fle5aurkKSmKpQHTmOR8vKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2094&quot; height=&quot;1254&quot; data-origin-width=&quot;2094&quot; data-origin-height=&quot;1254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 2020년 12월 첫째 주 신규 유입이 가장 높게 나타났으며, 이는 연말 시즌성 또는 프로모션 영향 가능성을 시사한다. 그러나 단순 유입 증가보다 중요한 것은 이후 리텐션 유지 여부이므로, 해당 코호트의 재방문율 검증이 필요하다. &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/GA4 분석</category>
      <author>조성호</author>
      <guid isPermaLink="true">https://jshdata0794.tistory.com/22</guid>
      <comments>https://jshdata0794.tistory.com/22#entry22comment</comments>
      <pubDate>Sun, 17 May 2026 18:40:30 +0900</pubDate>
    </item>
    <item>
      <title>[GA4 퍼널 분석] Day8 Priority Matrix 기반 전환율 개선 전략 최종 정리</title>
      <link>https://jshdata0794.tistory.com/21</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;304&quot; data-start=&quot;245&quot; data-ke-size=&quot;size16&quot;&gt;Day1부터 Day7까지의 분석을 통해 구매 퍼널 전반의 병목 구간과 주요 원인을 단계적으로 검증했다.&lt;/p&gt;
&lt;p data-end=&quot;427&quot; data-start=&quot;306&quot; data-ke-size=&quot;size16&quot;&gt;초기 퍼널에서는 상품 조회 대비 장바구니 전환율이 낮았고, 가격대와 카테고리별 차이가 주요 변수로 작용했다. 또한 결제 단계에서는 신규 유저의 구매 완료율이 상대적으로 낮아 신뢰 요소의 중요성을 확인할 수 있었다.&lt;/p&gt;
&lt;p data-end=&quot;516&quot; data-start=&quot;429&quot; data-ke-size=&quot;size16&quot;&gt;특히 Day7에서는 A/B 테스트를 통해 디바이스보다는 가격, 카테고리, 신규/기존 유저 여부가 실제 전환율 차이에 더 큰 영향을 준다는 점을 확인했다.&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;따라서 Day8에서는 지금까지의 분석 결과를 바탕으로 &amp;ldquo;가장 효과적으로 매출 개선이 가능한 전략은 무엇인가?&quot;를 Priority Matrix(Impact &amp;times; Ease) 방식으로 정리했다.&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;653&quot; data-start=&quot;634&quot; data-section-id=&quot;clxafl&quot; data-ke-size=&quot;size23&quot;&gt;지금까지의 핵심 문제 요약&lt;/h3&gt;
&lt;p data-end=&quot;685&quot; data-start=&quot;655&quot; data-section-id=&quot;zf6bb8&quot; data-ke-size=&quot;size16&quot;&gt;[문제 1] 상품 조회 대비 장바구니 전환율 낮음&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;740&quot; data-start=&quot;686&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;715&quot; data-start=&quot;686&quot; data-section-id=&quot;dx2sxr&quot;&gt;상품 탐색은 활발하지만 실제 장바구니 전환은 낮음&lt;/li&gt;
&lt;li data-end=&quot;740&quot; data-start=&quot;716&quot; data-section-id=&quot;12m0mo0&quot;&gt;가격 민감도와 카테고리 경쟁력 차이 존재&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;767&quot; data-start=&quot;742&quot; data-section-id=&quot;1r30yhj&quot; data-ke-size=&quot;size16&quot;&gt;[문제 2] 신규 유저 구매 전환율 낮음&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;816&quot; data-start=&quot;768&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;794&quot; data-start=&quot;768&quot; data-section-id=&quot;usnlg5&quot;&gt;Returning User 대비 구매율 낮음&lt;/li&gt;
&lt;li data-end=&quot;816&quot; data-start=&quot;795&quot; data-section-id=&quot;gqo2tn&quot;&gt;신뢰/후기/첫구매 혜택 부족 가능성&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;839&quot; data-start=&quot;818&quot; data-section-id=&quot;h7y9qx&quot; data-ke-size=&quot;size16&quot;&gt;[문제 3] 카테고리별 성과 편차&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;887&quot; data-start=&quot;840&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;854&quot; data-start=&quot;840&quot; data-section-id=&quot;1tk2m92&quot;&gt;Bags는 상대적 강세&lt;/li&gt;
&lt;li data-end=&quot;887&quot; data-start=&quot;855&quot; data-section-id=&quot;nzx24r&quot;&gt;일부 Apparel/Unknown 카테고리는 낮은 성과&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;909&quot; data-start=&quot;889&quot; data-section-id=&quot;z0866d&quot; data-ke-size=&quot;size16&quot;&gt;[문제 4] 디바이스 영향 낮음&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;950&quot; data-start=&quot;910&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;933&quot; data-start=&quot;910&quot; data-section-id=&quot;1de5gko&quot;&gt;Mobile/Desktop 차이 제한적&lt;/li&gt;
&lt;li data-end=&quot;950&quot; data-start=&quot;934&quot; data-section-id=&quot;13p6b55&quot;&gt;UX보다 상품 전략이 우선&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;983&quot; data-start=&quot;957&quot; data-section-id=&quot;50mw0y&quot; data-ke-size=&quot;size23&quot;&gt;Priority Matrix 분석 목적&lt;/h3&gt;
&lt;p data-end=&quot;1089&quot; data-start=&quot;985&quot; data-ke-size=&quot;size16&quot;&gt;모든 문제를 동시에 해결하는 것은 비효율적이다.&lt;br /&gt;따라서 매출 영향도(Impact)와 실행 난이도(Ease)를 기준으로&lt;br /&gt;가장 빠르게 성과를 낼 수 있는 영역부터 우선순위를 설정했다.&lt;/p&gt;
&lt;h3 data-end=&quot;1119&quot; data-start=&quot;1096&quot; data-section-id=&quot;1vbhhcu&quot; data-ke-size=&quot;size23&quot;&gt;Priority Matrix 결과&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;1412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPdgnC/dJMcabxp1wk/WT809EKKx0htViX0mUVka1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPdgnC/dJMcabxp1wk/WT809EKKx0htViX0mUVka1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPdgnC/dJMcabxp1wk/WT809EKKx0htViX0mUVka1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPdgnC%2FdJMcabxp1wk%2FWT809EKKx0htViX0mUVka1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1284&quot; height=&quot;1412&quot; data-origin-width=&quot;1284&quot; data-origin-height=&quot;1412&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;1149&quot; data-start=&quot;1121&quot; data-section-id=&quot;1w0nfzx&quot; data-ke-size=&quot;size20&quot;&gt;Quick Win (높은 영향 / 쉬운 실행)&lt;/h4&gt;
&lt;h4 data-end=&quot;1172&quot; data-start=&quot;1151&quot; data-section-id=&quot;1wzoak9&quot; data-ke-size=&quot;size20&quot;&gt;① 신규 유저 첫구매 혜택 강화&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1197&quot; data-start=&quot;1173&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1182&quot; data-start=&quot;1173&quot; data-section-id=&quot;as7gd7&quot;&gt;첫 구매 쿠폰&lt;/li&gt;
&lt;li data-end=&quot;1189&quot; data-start=&quot;1183&quot; data-section-id=&quot;1t2qyip&quot;&gt;무료배송&lt;/li&gt;
&lt;li data-end=&quot;1197&quot; data-start=&quot;1190&quot; data-section-id=&quot;1u9inp5&quot;&gt;후기 강조&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1222&quot; data-start=&quot;1199&quot; data-ke-size=&quot;size16&quot;&gt;이유:&lt;br /&gt;신뢰 장벽 완화 + 즉시 적용 가능&lt;/p&gt;
&lt;p data-end=&quot;1249&quot; data-start=&quot;1229&quot; data-section-id=&quot;oa4dif&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;1249&quot; data-start=&quot;1229&quot; data-section-id=&quot;oa4dif&quot; data-ke-size=&quot;size20&quot;&gt;② 고가 상품 상세페이지 개선&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1277&quot; data-start=&quot;1250&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1254&quot; data-start=&quot;1250&quot; data-section-id=&quot;yhz5h0&quot;&gt;리뷰&lt;/li&gt;
&lt;li data-end=&quot;1266&quot; data-start=&quot;1255&quot; data-section-id=&quot;bxx0tw&quot;&gt;가격 설득 포인트&lt;/li&gt;
&lt;li data-end=&quot;1277&quot; data-start=&quot;1267&quot; data-section-id=&quot;1ahfmac&quot;&gt;상품 비교 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1294&quot; data-start=&quot;1279&quot; data-ke-size=&quot;size16&quot;&gt;이유:&lt;br /&gt;가격 저항 완화 가능&lt;/p&gt;
&lt;p data-end=&quot;1341&quot; data-start=&quot;1301&quot; data-section-id=&quot;1u3jybj&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;1341&quot; data-start=&quot;1301&quot; data-section-id=&quot;1u3jybj&quot; data-ke-size=&quot;size20&quot;&gt;Strategic Project (높은 영향 / 실행 난이도 높음)&lt;/h4&gt;
&lt;h4 data-end=&quot;1363&quot; data-start=&quot;1343&quot; data-section-id=&quot;8ajykd&quot; data-ke-size=&quot;size20&quot;&gt;③ 저성과 카테고리 구조 개선&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1397&quot; data-start=&quot;1364&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1381&quot; data-start=&quot;1364&quot; data-section-id=&quot;1e5f45m&quot;&gt;Bags 성공 구조 벤치마킹&lt;/li&gt;
&lt;li data-end=&quot;1397&quot; data-start=&quot;1382&quot; data-section-id=&quot;gvn2je&quot;&gt;상세페이지/큐레이션 개선&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1415&quot; data-start=&quot;1399&quot; data-section-id=&quot;7yg1kp&quot; data-ke-size=&quot;size20&quot;&gt;④ 개인화 추천 시스템&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1432&quot; data-start=&quot;1416&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1432&quot; data-start=&quot;1416&quot; data-section-id=&quot;usbwaf&quot;&gt;신규/복귀 유저 분리 전략&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;1454&quot; data-start=&quot;1439&quot; data-section-id=&quot;rvkb6r&quot; data-ke-size=&quot;size20&quot;&gt;Low Priority&lt;/h4&gt;
&lt;h4 data-end=&quot;1475&quot; data-start=&quot;1456&quot; data-section-id=&quot;elffwr&quot; data-ke-size=&quot;size20&quot;&gt;⑤ 디바이스 UX 전면 개편&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1489&quot; data-start=&quot;1476&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1489&quot; data-start=&quot;1476&quot; data-section-id=&quot;m0qp6&quot;&gt;영향 대비 효율 낮음&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; width=&quot;162.00pt;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우선순위&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;전략&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기대효과&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신규 유저 첫구매 혜택&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신뢰 확보 및 구매율 개선&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;고가 상품 상세 강화&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가격 저항 완화&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;카테고리 구조 개선&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;저성과 카테고리 전환율 상승&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;개인화 추천&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;장기 리텐션 개선&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;디바이스 UX 개편&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;후순위&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1739&quot; data-start=&quot;1729&quot; data-section-id=&quot;ve8jw4&quot; data-ke-size=&quot;size23&quot;&gt;최종 결론&lt;/h3&gt;
&lt;p data-end=&quot;1829&quot; data-start=&quot;1741&quot; data-ke-size=&quot;size16&quot;&gt;이번 프로젝트를 통해 단순히 전환율이 낮은 구간을 찾는 것을 넘어,&lt;br /&gt;실제 비즈니스 관점에서 어떤 전략부터 실행해야 하는지 우선순위를 설정할 수 있었다.&lt;/p&gt;
&lt;p data-end=&quot;1931&quot; data-start=&quot;1831&quot; data-ke-size=&quot;size16&quot;&gt;가장 빠른 개선 포인트는 &amp;ldquo;신규 유저 신뢰 확보&amp;rdquo;와 &amp;ldquo;고가 상품 설득력 강화&amp;rdquo;였으며, 디바이스 UX보다 상품 전략과 고객 심리 요인이 더 중요한 변수라는 점을 확인했다.&lt;/p&gt;
&lt;p data-end=&quot;2005&quot; data-start=&quot;1933&quot; data-ke-size=&quot;size16&quot;&gt;따라서 데이터 분석은 문제를 찾는 데서 끝나는 것이 아니라,&lt;br /&gt;실행 가능한 전략으로 연결될 때 비즈니스 가치가 높아진다고 본다.&lt;/p&gt;
&lt;h3 data-end=&quot;2016&quot; data-start=&quot;2012&quot; data-section-id=&quot;yi1gjn&quot; data-ke-size=&quot;size23&quot;&gt;복기&lt;/h3&gt;
&lt;p data-end=&quot;2141&quot; data-start=&quot;2017&quot; data-ke-size=&quot;size16&quot;&gt;이번 GA4 프로젝트를 통해 퍼널 분석 &amp;rarr; 세그먼트 분석 &amp;rarr; A/B 테스트 &amp;rarr; Priority Matrix 과정을 경험하며, 데이터 기반 문제 정의부터 실행 전략 도출까지의 전체 흐름을 구조적으로 학습할 수 있었다.&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;627&quot; data-start=&quot;518&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/GA4 분석</category>
      <author>조성호</author>
      <guid isPermaLink="true">https://jshdata0794.tistory.com/21</guid>
      <comments>https://jshdata0794.tistory.com/21#entry21comment</comments>
      <pubDate>Thu, 14 May 2026 23:08:06 +0900</pubDate>
    </item>
    <item>
      <title>[GA4 퍼널 분석] Day7-3 Category Mix 최적화 시뮬레이션</title>
      <link>https://jshdata0794.tistory.com/20</link>
      <description>&lt;p data-end=&quot;104&quot; data-start=&quot;45&quot; data-section-id=&quot;pm8c1l&quot; data-ke-size=&quot;size18&quot;&gt;카테고리 구조를 바꾸면 성과가 좋아질까?&lt;/p&gt;
&lt;h3 data-end=&quot;125&quot; data-start=&quot;111&quot; data-section-id=&quot;c83n5d&quot; data-ke-size=&quot;size23&quot;&gt;분석 목표&lt;/h3&gt;
&lt;p data-end=&quot;206&quot; data-start=&quot;127&quot; data-ke-size=&quot;size16&quot;&gt;Day5 분석에서는 Category 역시 Price Band와 함께 view_item &amp;rarr; add_to_cart 단계의 핵심 변수 후보였다.&lt;/p&gt;
&lt;p data-end=&quot;255&quot; data-start=&quot;208&quot; data-ke-size=&quot;size16&quot;&gt;특히 일부 분석 과정에서 Bags 카테고리가 상대적으로 강한 후보처럼 보였기 때문에 &quot;Unknown(분류 불명확 카테고리) 일부를 Bags 중심 구조로 전환하면 전체 장바구니 및 구매 성과가 개선될 수 있을까?&amp;rdquo;를 시뮬레이션했다.&lt;/p&gt;
&lt;p data-end=&quot;377&quot; data-start=&quot;351&quot; data-ke-size=&quot;size16&quot;&gt;즉,이번 시나리오는 단순 전환율 개선이 아니라&amp;ldquo;무엇을 더 많이 보여줄 것인가?&amp;rdquo;라는 카테고리 운영 전략 관점의 검증이다.&lt;/p&gt;
&lt;h3 data-end=&quot;443&quot; data-start=&quot;433&quot; data-section-id=&quot;1oygakr&quot; data-ke-size=&quot;size23&quot;&gt;분석 목적&lt;/h3&gt;
&lt;p data-end=&quot;503&quot; data-start=&quot;451&quot; data-ke-size=&quot;size16&quot;&gt;Category Mix 최적화가 실제 상단 퍼널 성과 개선 전략이 될 수 있는지 확인하고 단순 Bags 확대가 효과적인지 혹은 Category 구조 자체보다 데이터 품질이 더 중요한지 검토&lt;/p&gt;
&lt;h3 data-end=&quot;578&quot; data-start=&quot;568&quot; data-section-id=&quot;e1sh6m&quot; data-ke-size=&quot;size23&quot;&gt;분석 방법&lt;/h3&gt;
&lt;p data-end=&quot;646&quot; data-start=&quot;587&quot; data-ke-size=&quot;size16&quot;&gt;현재 Unknown category 조회 세션 일부를 Bags 수준의 전환 구조로 전환한다고 가정했다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;729&quot; data-start=&quot;661&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;683&quot; data-start=&quot;661&quot; data-section-id=&quot;m5zs8x&quot;&gt;Unknown 10% &amp;rarr; Bags&lt;/li&gt;
&lt;li data-end=&quot;706&quot; data-start=&quot;684&quot; data-section-id=&quot;ghg2ea&quot;&gt;Unknown 20% &amp;rarr; Bags&lt;/li&gt;
&lt;li data-end=&quot;729&quot; data-start=&quot;707&quot; data-section-id=&quot;1vb42kj&quot;&gt;Unknown 30% &amp;rarr; Bags&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;733&quot; data-start=&quot;731&quot; data-ke-size=&quot;size16&quot;&gt;즉, Unknown&amp;nbsp;일부&amp;nbsp;노출&amp;nbsp;구조를&amp;nbsp;Bags&amp;nbsp;중심으로&amp;nbsp;재배치 &lt;br /&gt;&amp;rarr; Category Mix 변화가 성과를 개선하는가?&lt;/p&gt;
&lt;h3 data-end=&quot;853&quot; data-start=&quot;836&quot; data-section-id=&quot;1r044kc&quot; data-ke-size=&quot;size23&quot;&gt;데이터 전처리&lt;/h3&gt;
&lt;p data-end=&quot;907&quot; data-start=&quot;855&quot; data-ke-size=&quot;size16&quot;&gt;이번 시나리오에서 가장 중요한 부분은 단순 시뮬레이션보다 &lt;b&gt;이전 분석 실수 복기&lt;/b&gt;였다.&lt;/p&gt;
&lt;p data-end=&quot;919&quot; data-start=&quot;909&quot; data-section-id=&quot;1hx6jtc&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;995&quot; data-start=&quot;920&quot; data-ke-size=&quot;size16&quot;&gt;Day5 초기 분석 과정에서 Unknown(공백/결측 category)을 명확히 복구하지 않고 공백 상태로 처리한 적이 있었다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1089&quot; data-start=&quot;1004&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1026&quot; data-start=&quot;1004&quot; data-section-id=&quot;104dnjg&quot;&gt;Unknown 그룹 자체가 누락&lt;/li&gt;
&lt;li data-end=&quot;1058&quot; data-start=&quot;1027&quot; data-section-id=&quot;15p4nij&quot;&gt;실제 분류되지 않은 상품군이 다른 해석으로 왜곡&lt;/li&gt;
&lt;li data-end=&quot;1089&quot; data-start=&quot;1059&quot; data-section-id=&quot;hb833e&quot;&gt;Category 비교 구조 자체가 흔들림&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1109&quot; data-start=&quot;1096&quot; data-section-id=&quot;x5e3jx&quot; data-ke-size=&quot;size23&quot;&gt;수정한 전처리 핵심&lt;/h3&gt;
&lt;p data-end=&quot;1144&quot; data-start=&quot;1110&quot; data-section-id=&quot;13tlltt&quot; data-ke-size=&quot;size16&quot;&gt;공백 / 결측 category를 Unknown으로 복구&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;prolog&quot;&gt;&lt;code&gt;category_df[&quot;item_category&quot;] = category_df[&quot;item_category&quot;].fillna(&quot;Unknown&quot;)
category_df[&quot;item_category&quot;] = category_df[&quot;item_category&quot;].astype(str).str.strip()
category_df.loc[category_df[&quot;item_category&quot;] == &quot;&quot;, &quot;item_category&quot;] = &quot;Unknown&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;1433&quot; data-start=&quot;1421&quot; data-section-id=&quot;lei7p9&quot; data-ke-size=&quot;size23&quot;&gt;깨달은 점&lt;/h3&gt;
&lt;p data-end=&quot;1452&quot; data-start=&quot;1434&quot; data-section-id=&quot;1wh9l9a&quot; data-ke-size=&quot;size16&quot;&gt;데이터 전처리 실수 하나가 단순 수치 오류를 넘어서 &amp;ldquo;어떤 카테고리가 더 중요한가?&amp;rdquo; 라는 전략적 결론 자체를 왜곡할 수 있다.&lt;/p&gt;
&lt;p data-end=&quot;1578&quot; data-start=&quot;1537&quot; data-ke-size=&quot;size16&quot;&gt;즉, 데이터 품질은 분석 이전 단계가 아니라 전략 판단의 시작점이었다.&lt;/p&gt;
&lt;p data-end=&quot;1601&quot; data-start=&quot;1585&quot; data-section-id=&quot;c85r2w&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;1601&quot; data-start=&quot;1585&quot; data-section-id=&quot;c85r2w&quot; data-ke-size=&quot;size23&quot;&gt;시뮬레이터 설정&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# 개선 시나리오 설정
scenarios = [
    {
        &quot;scenario&quot;: &quot;Unknown 10% &amp;rarr; Bags&quot;,
        &quot;reallocation_rate&quot;: 0.10
    },
    {
        &quot;scenario&quot;: &quot;Unknown 20% &amp;rarr; Bags&quot;,
        &quot;reallocation_rate&quot;: 0.20
    },
    {
        &quot;scenario&quot;: &quot;Unknown 30% &amp;rarr; Bags&quot;,
        &quot;reallocation_rate&quot;: 0.30
    }
]

# 시뮬레이션 계산
result = []

for s in scenarios:
    
    # Bags 수준으로 개선되는 Unknown 조회 수
    reallocated_views = unknown_view * s[&quot;reallocation_rate&quot;]

    # 기존 Unknown 전환율 기준 장바구니 수
    current_expected_cart = reallocated_views * unknown_rate

    # Bags 전환율 기준 장바구니 수
    bags_expected_cart = reallocated_views * bags_rate

    # 추가 장바구니 수
    incremental_cart = bags_expected_cart - current_expected_cart

    # 추가 구매 수 추정
    incremental_purchase_proxy = incremental_cart * purchase_proxy_rate

    # 기대 가치 추정
    expected_value = incremental_purchase_proxy * aov_proxy

    result.append({
        &quot;scenario&quot;: s[&quot;scenario&quot;],
        &quot;reallocated_views&quot;: round(reallocated_views, 1),
        &quot;unknown_cart_rate(%)&quot;: round(unknown_rate * 100, 2),
        &quot;bags_cart_rate(%)&quot;: round(bags_rate * 100, 2),
        &quot;incremental_cart&quot;: round(incremental_cart, 1),
        &quot;incremental_purchase_proxy&quot;: round(incremental_purchase_proxy, 1),
        &quot;expected_value&quot;: round(expected_value, 2)
    })

# 결과 데이터프레임 생성
category_mix_df = pd.DataFrame(result)

print(&quot;\n=== Bags Category Mix Optimization Simulation ===&quot;)
print(category_mix_df)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;=== Bags Category Mix Optimization Simulation ===

Unknown 10% &amp;rarr; Bags
추가 장바구니: -24.9
추가 구매 추정: -11.9
기대 가치: -4,403.90

Unknown 20% &amp;rarr; Bags
추가 장바구니: -49.8
추가 구매 추정: -23.9
기대 가치: -8,807.80

Unknown 30% &amp;rarr; Bags
추가 장바구니: -74.6
추가 구매 추정: -35.8
기대 가치: -13,211.69&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;2373&quot; data-start=&quot;2363&quot; data-section-id=&quot;rhnyre&quot; data-ke-size=&quot;size23&quot;&gt;결과 해석&lt;/h3&gt;
&lt;p data-end=&quot;2441&quot; data-start=&quot;2384&quot; data-ke-size=&quot;size16&quot;&gt;예상과 달리, Unknown 일부를 Bags 구조로 전환할 경우 모든 시나리오에서 성과가 악화됐다.&lt;/p&gt;
&lt;p data-end=&quot;2457&quot; data-start=&quot;2447&quot; data-section-id=&quot;6dk8g0&quot; data-ke-size=&quot;size16&quot;&gt;초기 가설: Bags 확대 &amp;rarr; 성과 개선&lt;/p&gt;
&lt;p data-end=&quot;2485&quot; data-start=&quot;2475&quot; data-section-id=&quot;17ma3mw&quot; data-ke-size=&quot;size16&quot;&gt;실제 결과: Bags 확대 &amp;rarr; 성과 감소&lt;/p&gt;
&lt;h3 data-end=&quot;2513&quot; data-start=&quot;2508&quot; data-section-id=&quot;1mbsn9&quot; data-ke-size=&quot;size23&quot;&gt;의미&lt;/h3&gt;
&lt;p data-end=&quot;2567&quot; data-start=&quot;2514&quot; data-ke-size=&quot;size16&quot;&gt;단순히 Bags를 더 많이 노출하는 전략은 현재 데이터 기준 우선순위가 아닐 가능성이 높다.&lt;/p&gt;
&lt;p data-end=&quot;2617&quot; data-start=&quot;2589&quot; data-ke-size=&quot;size16&quot;&gt;Unknown은 실제 무엇으로 구성되어 있는지가 더 중요한 질문인 것 같다.&lt;/p&gt;
&lt;h3 data-end=&quot;2636&quot; data-start=&quot;2624&quot; data-section-id=&quot;1298whd&quot; data-ke-size=&quot;size23&quot;&gt;핵심 인사이트&lt;/h3&gt;
&lt;p data-end=&quot;2674&quot; data-start=&quot;2658&quot; data-section-id=&quot;1c2i9pf&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;좋은 전략 찾기&amp;rdquo;보다 &amp;ldquo;잘못된 전략 제외하기&amp;rdquo;&lt;/p&gt;
&lt;p data-end=&quot;2726&quot; data-start=&quot;2699&quot; data-ke-size=&quot;size16&quot;&gt;모든 가설이 성과 개선으로 이어지지 않으며, 잘못된 전처리나 불완전한 분류는 잘못된 전략 실행으로 이어질 수 있다.&lt;/p&gt;
&lt;h3 data-end=&quot;2790&quot; data-start=&quot;2776&quot; data-section-id=&quot;1c83e09&quot; data-ke-size=&quot;size23&quot;&gt;비즈니스 인사이트&lt;/h3&gt;
&lt;p data-end=&quot;2806&quot; data-start=&quot;2792&quot; data-section-id=&quot;1ok5c09&quot; data-ke-size=&quot;size18&quot;&gt;우선 검토 가능 액션&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2902&quot; data-start=&quot;2807&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2826&quot; data-start=&quot;2807&quot; data-section-id=&quot;1yufnmd&quot;&gt;Unknown 내부 상품 세분화&lt;/li&gt;
&lt;li data-end=&quot;2852&quot; data-start=&quot;2827&quot; data-section-id=&quot;1jhi9px&quot;&gt;Category Attribution 개선&lt;/li&gt;
&lt;li data-end=&quot;2865&quot; data-start=&quot;2853&quot; data-section-id=&quot;1yf61ax&quot;&gt;실제 상품군 재분류&lt;/li&gt;
&lt;li data-end=&quot;2902&quot; data-start=&quot;2866&quot; data-section-id=&quot;1oxml6b&quot;&gt;Bags vs Apparel vs Accessories 재검증&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;2933&quot; data-start=&quot;2909&quot; data-section-id=&quot;1beuga4&quot; data-ke-size=&quot;size20&quot;&gt;최종 결론&lt;/h4&gt;
&lt;p data-end=&quot;3005&quot; data-start=&quot;2935&quot; data-ke-size=&quot;size16&quot;&gt;이번 분석을 통해 Category Mix 최적화보다 먼저 Category 데이터 품질 개선이 선행되어야 함을 확인했다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;code-block-viewer&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;Category 전략 이전에
Category 정확도가 우선이다.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;3096&quot; data-start=&quot;3077&quot; data-section-id=&quot;1isveqb&quot; data-ke-size=&quot;size23&quot;&gt;최종 정리&lt;/h3&gt;
&lt;h4 data-end=&quot;3111&quot; data-start=&quot;3098&quot; data-section-id=&quot;evvfhm&quot; data-ke-size=&quot;size20&quot;&gt;Scenario A&lt;/h4&gt;
&lt;p data-end=&quot;3139&quot; data-start=&quot;3112&quot; data-section-id=&quot;15k1txz&quot; data-ke-size=&quot;size16&quot;&gt;New User Checkout Trust&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3175&quot; data-start=&quot;3140&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3158&quot; data-start=&quot;3140&quot; data-section-id=&quot;s6hj50&quot;&gt;가장 직접적인 하단 퍼널 개선&lt;/li&gt;
&lt;li data-end=&quot;3175&quot; data-start=&quot;3159&quot; data-section-id=&quot;ju4pd1&quot;&gt;신규 유저 신뢰 장벽 핵심&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;3195&quot; data-start=&quot;3182&quot; data-section-id=&quot;evvfhl&quot; data-ke-size=&quot;size20&quot;&gt;Scenario B&lt;/h4&gt;
&lt;p data-end=&quot;3221&quot; data-start=&quot;3196&quot; data-section-id=&quot;pzjo71&quot; data-ke-size=&quot;size16&quot;&gt;High Price Conversion&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3252&quot; data-start=&quot;3222&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3232&quot; data-start=&quot;3222&quot; data-section-id=&quot;1e58lis&quot;&gt;상단 퍼널 핵심&lt;/li&gt;
&lt;li data-end=&quot;3252&quot; data-start=&quot;3233&quot; data-section-id=&quot;1p4vry6&quot;&gt;가격 인식 / 상품 경쟁력 중요&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-end=&quot;3272&quot; data-start=&quot;3259&quot; data-section-id=&quot;evvfhk&quot; data-ke-size=&quot;size20&quot;&gt;Scenario C&lt;/h4&gt;
&lt;p data-end=&quot;3289&quot; data-start=&quot;3273&quot; data-section-id=&quot;h66ulm&quot; data-ke-size=&quot;size16&quot;&gt;Category Mix&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3332&quot; data-start=&quot;3290&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3304&quot; data-start=&quot;3290&quot; data-section-id=&quot;10ar8lq&quot;&gt;단순 Bags 확대보다&lt;/li&gt;
&lt;li data-end=&quot;3332&quot; data-start=&quot;3305&quot; data-section-id=&quot;18huj4u&quot;&gt;Unknown 구조 해석 및 데이터 품질 우선&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;3353&quot; data-start=&quot;3339&quot; data-section-id=&quot;1n0xf8c&quot; data-ke-size=&quot;size23&quot;&gt;최종 우선순위&lt;/h3&gt;
&lt;p data-end=&quot;3364&quot; data-start=&quot;3355&quot; data-section-id=&quot;1775wse&quot; data-ke-size=&quot;size16&quot;&gt;Tier 1 : User Trust (New User Checkout)&lt;/p&gt;
&lt;p data-end=&quot;3410&quot; data-start=&quot;3401&quot; data-section-id=&quot;1775wsd&quot; data-ke-size=&quot;size16&quot;&gt;Tier 2 : Price Strategy (High Price)&lt;/p&gt;
&lt;p data-end=&quot;3453&quot; data-start=&quot;3444&quot; data-section-id=&quot;1775wsc&quot; data-ke-size=&quot;size16&quot;&gt;Tier 3 : Category Quality (Unknown Data Quality)&lt;/p&gt;
&lt;p data-end=&quot;3520&quot; data-start=&quot;3504&quot; data-section-id=&quot;1ishno5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;3540&quot; data-start=&quot;3522&quot; data-section-id=&quot;i7pzsp&quot; data-ke-size=&quot;size16&quot;&gt;상단 퍼널에서는 Price, 하단 퍼널에서는 User Trust, 그리고 그 모든 전략 이전에는 Data Quality가 중요했다.&lt;/p&gt;
&lt;h3 data-end=&quot;3627&quot; data-start=&quot;3611&quot; data-section-id=&quot;q38hjm&quot; data-ke-size=&quot;size23&quot;&gt;깨달은 점&lt;/h3&gt;
&lt;p data-end=&quot;3665&quot; data-start=&quot;3629&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;ldquo;무엇을 개선하면 좋은가?&amp;rdquo;를 넘어서, &amp;ldquo;잘못된 데이터 해석은 잘못된 전략으로 이어질 수 있다&amp;rdquo;는 점을 확인한 과정이었다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-end=&quot;3665&quot; data-start=&quot;3629&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;데이터 분석가는 숫자를 해석하는 사람을 넘어, 어떤 데이터가 전략 판단에 적합한지 검증하는 사람&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;이어야 한다는 점을 가장 크게 배웠다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로젝트/GA4 분석</category>
      <author>조성호</author>
      <guid isPermaLink="true">https://jshdata0794.tistory.com/20</guid>
      <comments>https://jshdata0794.tistory.com/20#entry20comment</comments>
      <pubDate>Wed, 13 May 2026 23:02:40 +0900</pubDate>
    </item>
  </channel>
</rss>