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
- Crea un CTE first_orders con el MIN(order_date) de cada cliente.
- Deja solo la cohorte de enero de 2024: substr(first_date, 1, 7) = '2024-01'.
- Cuenta el tamaño de la cohorte.
- Une la cohorte otra vez con orders y cuenta los clientes DISTINCT que tienen un pedido en '2024-02'.
- 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).
- 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 %