Misión M26 · SQL · 35 min

Retención de clientes por cohorte

Pedido de tu gerente

La gerente del programa de lealtad pregunta: "De los clientes que hicieron su primer pedido en enero de 2024, ¿qué porcentaje volvió a comprar en febrero de 2024?"

Datos

Descarga el/los archivo(s) de práctica:

Pasos

  1. Crea un CTE first_orders con el MIN(order_date) de cada cliente.
  2. Deja solo la cohorte de enero de 2024: substr(first_date, 1, 7) = '2024-01'.
  3. Cuenta el tamaño de la cohorte.
  4. Une la cohorte otra vez con orders y cuenta los clientes DISTINCT que tienen un pedido en '2024-02'.
  5. Divide los clientes que regresaron entre el tamaño de la cohorte y multiplica por 100.0 (usa 100.0 y no 100 para evitar la división entera).
  6. Reto extra: repítelo con '2024-03' para ver la retención del segundo mes.

Revisa tu respuesta

¿Qué % de la cohorte de enero de 2024 volvió a comprar en febrero de 2024?

Ver solución

283 clientes hicieron su primer pedido en enero de 2024; 59 de ellos compraron en febrero de 2024, así que la retención del mes 1 = 59 / 283 = 20.85%.

WITH first_orders AS (
    SELECT customer_id, MIN(order_date) AS first_date
    FROM orders
    GROUP BY customer_id
),
cohort AS (
    SELECT customer_id
    FROM first_orders
    WHERE substr(first_date, 1, 7) = '2024-01'
),
returned AS (
    SELECT DISTINCT o.customer_id
    FROM orders o
    JOIN cohort c ON c.customer_id = o.customer_id
    WHERE substr(o.order_date, 1, 7) = '2024-02'
)
SELECT (SELECT COUNT(*) FROM cohort) AS cohort_size,
       (SELECT COUNT(*) FROM returned) AS returned,
       ROUND(100.0 * (SELECT COUNT(*) FROM returned)
             / (SELECT COUNT(*) FROM cohort), 2) AS retention_pct;

Respuesta: 20.85 %