Как посчитать video completion rate в SQL

Закрепи формулу video completion rate в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать video completion rate в Telegram

Зачем completion rate

Video completion rate (VCR) — главный индикатор качества контента. Низкий VCR = boring, плохой производительности, или плохая обложка. У YouTube это «audience retention», у TV — «AMA» (average minute audience). Для marketing video оптимизируют на 25-50% completion (короткий attention span). Для long-form — 60%+.

Формула

completion_rate = views_to_end / views_started

«Started» обычно — view past first 3 seconds. «To end» — past 95% длительности.

Completion в SQL

WITH video_views AS (
    SELECT
        view_id,
        video_id,
        max_watched_seconds,
        video_duration_seconds
    FROM video_view_events
    WHERE view_started_at >= CURRENT_DATE - INTERVAL '30 days'
      AND max_watched_seconds >= 3  -- past 3 seconds = "started"
)
SELECT
    video_id,
    COUNT(*) AS views,
    COUNT(*) FILTER (WHERE max_watched_seconds >= video_duration_seconds * 0.95) AS completed,
    COUNT(*) FILTER (WHERE max_watched_seconds >= video_duration_seconds * 0.95)::NUMERIC * 100
    / NULLIF(COUNT(*), 0) AS completion_pct
FROM video_views
GROUP BY video_id
HAVING COUNT(*) >= 100
ORDER BY completion_pct DESC;

VCR 70%+ — high engagement. VCR < 20% — content drops viewers быстро.

По длительности видео

SELECT
    CASE
        WHEN video_duration_seconds <= 30  THEN '0-30s'
        WHEN video_duration_seconds <= 60  THEN '30-60s'
        WHEN video_duration_seconds <= 180 THEN '1-3 min'
        WHEN video_duration_seconds <= 600 THEN '3-10 min'
        ELSE '10+ min'
    END AS duration_bucket,
    AVG(CASE WHEN max_watched_seconds >= video_duration_seconds * 0.95 THEN 1.0 ELSE 0 END) * 100 AS avg_completion_pct
FROM video_view_events
WHERE view_started_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY 1
ORDER BY MIN(video_duration_seconds);

Короткие видео обычно 70-85% completion. Long-form 30-40%.

Закрепи формулу video completion rate в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать video completion rate в Telegram

По устройству

SELECT
    device_type,
    AVG(CASE WHEN max_watched_seconds >= video_duration_seconds * 0.95 THEN 1.0 ELSE 0 END) * 100 AS completion_pct,
    COUNT(*) AS views
FROM video_view_events
WHERE view_started_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY device_type
ORDER BY completion_pct DESC;

Mobile completion обычно ниже (отвлекаются), TV — выше (sit-back experience).

Частые ошибки

Ошибка 1. Completion = 100% playback. Видео в 100% не reach из-за credits / pre-roll. 95% — стандарт «completed».

Ошибка 2. Включать 1-second views. Случайный click → 1 second. Filter max_watched_seconds >= 3.

Ошибка 3. Не учитывать skips. Юзер skip-нул кусок → max_watched может быть 100% без actual viewing. Track engaged minutes.

Ошибка 4. Один cutoff для всех. Short-form 95% normal. Long-form 80% реалистично.

Ошибка 5. Сравнивать VCR на ad vs organic. Ads inflate (autoplay), organic clicks — другое поведение.

Связанные темы

FAQ

Какой VCR хороший?

Short-form (TikTok): 70-90%. Mid-form (YouTube): 40-60%. Long-form (Netflix): 30-50%.

75% или 95% cutoff?

95% — strict. 75% — relaxed. Чаще publishers используют 75%.

Skips влияют?

Без проверки watched_seconds не учтены. Track «engaged seconds» отдельно.

Mobile vs desktop?

Mobile attention shorter (15-30%). Desktop / TV outdo.

Видео без metadata?

Если duration unknown — нельзя считать VCR. Track completion event explicitly.