← Назад к вопросам

Как выявить сегменты пользователей с максимальным LTV?

1.8 Middle🔥 171 комментариев
#SQL и базы данных#Аналитика и метрики

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Выявление сегментов с максимальным LTV

LTV (Lifetime Value) — сумма всех доходов от пользователя за весь период. Это ключевая метрика для определения ценности сегментов.

Шаг 1: Базовый расчёт LTV

WITH user_ltv AS (
  SELECT 
    user_id,
    SUM(amount) as ltv,
    COUNT(order_id) as orders,
    MAX(order_date) as last_purchase
  FROM orders
  WHERE order_date >= DATE_SUB(CURRENT_DATE, INTERVAL 2 YEAR)
  GROUP BY user_id
)
SELECT * FROM user_ltv ORDER BY ltv DESC;

Шаг 2: RFM сегментация

Использую Recency, Frequency, Monetary для определения групп:

WITH rfm AS (
  SELECT 
    user_id,
    DATEDIFF(day, MAX(order_date), CURRENT_DATE) as recency,
    COUNT(*) as frequency,
    SUM(amount) as monetary,
    NTILE(5) OVER (ORDER BY DATEDIFF(day, MAX(order_date), CURRENT_DATE) DESC) as r,
    NTILE(5) OVER (ORDER BY COUNT(*)) as f,
    NTILE(5) OVER (ORDER BY SUM(amount)) as m
  FROM orders
  GROUP BY user_id
)
SELECT 
  CONCAT(r,f,m) as segment,
  COUNT(*) as users,
  ROUND(AVG(monetary), 2) as avg_ltv,
  ROUND(SUM(monetary), 2) as total_revenue
FROM rfm
GROUP BY segment
ORDER BY avg_ltv DESC;

Шаг 3: Демографическая сегментация

SELECT 
  u.country,
  u.device_type,
  COUNT(u.user_id) as segment_size,
  ROUND(AVG(l.ltv), 2) as avg_ltv,
  ROUND(MAX(l.ltv), 2) as max_ltv,
  ROUND(PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY l.ltv), 2) as p75_ltv
FROM users u
JOIN user_ltv l ON u.user_id = l.user_id
GROUP BY u.country, u.device_type
HAVING COUNT(u.user_id) >= 50
ORDER BY avg_ltv DESC;

Шаг 4: Когортный анализ

SELECT 
  DATE_TRUNC('month', u.created_at) as cohort,
  COUNT(u.user_id) as cohort_size,
  ROUND(AVG(l.ltv), 2) as cohort_ltv,
  ROUND(SUM(l.ltv), 0) as total_cohort_revenue
FROM users u
LEFT JOIN user_ltv l ON u.user_id = l.user_id
GROUP BY cohort
ORDER BY cohort DESC;

Шаг 5: Машинное обучение (Python)

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

# Загрузка данных
df = pd.read_sql(query, conn)

# Выбираем признаки
features = ['ltv', 'order_frequency', 'avg_order_value', 'days_since_first']
X = df[features]

# Нормализация
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Кластеризация
kmeans = KMeans(n_clusters=5, random_state=42)
df['segment'] = kmeans.fit_predict(X_scaled)

# Анализ
print(df.groupby('segment')[features].mean())

Ключевые метрики TOP LTV сегментов

  • Размер: минимум 5-10% от базы (статистическая значимость)
  • Тренд: растущая или стабильная LTV
  • Потенциал: возможность расширения подобных пользователей
  • Рентабельность: CAC < LTV * 3

Практическое применение

TOP сегменты: увеличивать retention, премиум фичи, VIP программы

LOW сегменты: анализировать причину (новые пользователи, неправильный тип), но не удалять

На практике 20-30% пользователей приносят 70-80% доходов. Выявление этих сегментов позволяет сосредоточить маркетинг и развитие на перспективных направлениях.