← Назад к вопросам
SQL: Найти VIP клиентов по правилу Парето
2.0 Middle🔥 111 комментариев
#SQL и базы данных#Метрики продукта
Условие
У вас есть таблица orders:
- order_id (integer)
- customer_id (integer)
- amount (decimal)
Найдите клиентов, которые генерируют 80 процентов выручки (правило Парето).
Ожидаемый результат:
Таблица с колонками: customer_id, total_spent, cumulative_pct
Выведите только клиентов в топ-80 процентов кумулятивной выручки.
Источник: задача на кумулятивные расчеты
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Правило Парето: 80/20
Это правило гласит, что 80% выручки генерируют всего 20% клиентов. Такие клиенты называются VIP и требуют особого внимания.
SQL Решение
WITH customer_totals AS (
SELECT customer_id, ROUND(SUM(amount), 2) as total_spent
FROM orders
GROUP BY customer_id
),
ranked_customers AS (
SELECT
customer_id,
total_spent,
SUM(total_spent) OVER (ORDER BY total_spent DESC) as cumulative_revenue,
SUM(total_spent) OVER () as total_revenue
FROM customer_totals
)
SELECT
customer_id,
total_spent,
ROUND(100.0 * cumulative_revenue / total_revenue, 2) as cumulative_pct
FROM ranked_customers
WHERE cumulative_revenue / total_revenue <= 0.80
ORDER BY total_spent DESC;
Стратегия
- Выявление VIP клиентов из топ-80% выручки
- Персональный менеджер для каждого
- Экстра внимание к удержанию
- Специальные условия и предложения