← Назад к вопросам
SQL: Сравнение конверсии между устройствами
1.0 Junior🔥 271 комментариев
#SQL и базы данных#Метрики продукта
Условие
У вас есть таблица sessions:
- session_id (integer)
- user_id (integer)
- device_type (varchar) - mobile, desktop, tablet
- session_date (date)
И таблица conversions:
- session_id (integer)
- conversion_type (varchar)
- revenue (decimal)
Сравните конверсию между типами устройств.
Ожидаемый результат:
Таблица с колонками: device_type, sessions_count, conversions_count, conversion_rate, avg_revenue
Источник: анализ по устройствам
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Решение
Это задача на сравнительный анализ по типам устройств — критична для оптимизации мобильного опыта.
SQL запрос для сравнения по устройствам:
SELECT
s.device_type,
COUNT(DISTINCT s.session_id) as sessions_count,
COUNT(DISTINCT CASE WHEN c.session_id IS NOT NULL THEN s.session_id END) as conversions_count,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN c.session_id IS NOT NULL THEN s.session_id END) / COUNT(DISTINCT s.session_id), 2) as conversion_rate,
ROUND(AVG(c.revenue), 2) as avg_revenue,
ROUND(SUM(c.revenue) / COUNT(DISTINCT s.session_id), 2) as revenue_per_session
FROM sessions s
LEFT JOIN conversions c ON s.session_id = c.session_id
GROUP BY s.device_type
ORDER BY conversion_rate DESC;
Вариант с дополнительной аналитикой:
WITH device_stats AS (
SELECT
s.device_type,
COUNT(DISTINCT s.session_id) as sessions_count,
COUNT(DISTINCT s.user_id) as unique_users,
COUNT(DISTINCT CASE WHEN c.session_id IS NOT NULL THEN s.session_id END) as conversions_count,
ROUND(100.0 * COUNT(DISTINCT CASE WHEN c.session_id IS NOT NULL THEN s.session_id END) / COUNT(DISTINCT s.session_id), 2) as conversion_rate,
ROUND(SUM(c.revenue) / COUNT(DISTINCT s.session_id), 2) as revenue_per_session,
ROUND(SUM(c.revenue) / COUNT(DISTINCT s.user_id), 2) as revenue_per_user
FROM sessions s
LEFT JOIN conversions c ON s.session_id = c.session_id
GROUP BY s.device_type
)
SELECT
device_type,
sessions_count,
unique_users,
ROUND(sessions_count::NUMERIC / unique_users, 2) as sessions_per_user,
conversions_count,
conversion_rate,
revenue_per_session,
revenue_per_user
FROM device_stats
ORDER BY conversion_rate DESC;
Ожидаемый результат (типичный пример):
device_type | sessions_count | conversions_count | conversion_rate | avg_revenue | revenue_per_session
Desktop | 50,000 | 2,500 | 5.00% | $15.50 | $0.78
Mobile | 120,000 | 3,600 | 3.00% | $10.20 | $0.31
Tablet | 30,000 | 900 | 3.00% | $12.00 | $0.36
Ключевые метрики:
- Conversion Rate — какой % сессий привели к конверсии (Desktop выше)
- Revenue per Session — выручка на сессию (главная метрика)
- Revenue per User — среднее за пользователя
- Sessions per User — сколько сессий до конверсии
Анализ:
- Desktop > Mobile — выше конверсия (5% vs 3%), но Mobile больше трафика
- Mobile revenue — в 2.5x раз ниже per session (нужна оптимизация)
- Tablet — промежуточный вариант
Что проверить при разнице:
- Мобильная форма — медленная? Клавиатура мешает?
- Платёжные методы — Apple Pay/Google Pay на мобильных?
- Дизайн — отзывчивый ли (responsive)?
Применение:
- Мобильный приоритет — 70% трафика обычно с мобильных
- A/B тесты отдельно для Mobile и Desktop
- Оптимизировать Mobile для +1% конверсии = +$X в выручке