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

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

Зачем UGC rate

UGC (User Generated Content) rate — доля юзеров, создающих контент vs только consuming. На большинстве платформ работает 90-9-1 правило: 90% lurkers, 9% occasional, 1% power creators. Высокий UGC rate (10%+) = healthy participation, low (3%-) = audience-driven, not creator-driven.

Формула

ugc_rate = users_who_posted / total_active_users

В period (30 / 90 days обычно).

UGC в SQL

WITH active_users AS (
    SELECT DISTINCT user_id
    FROM events
    WHERE event_date >= CURRENT_DATE - INTERVAL '30 days'
),
creators AS (
    SELECT DISTINCT author_id AS user_id
    FROM posts
    WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
)
SELECT
    (SELECT COUNT(*) FROM active_users) AS active_users,
    (SELECT COUNT(*) FROM creators) AS creators,
    (SELECT COUNT(*) FROM creators)::NUMERIC * 100
    / NULLIF((SELECT COUNT(*) FROM active_users), 0) AS ugc_rate_pct;

UGC rate 10% — норма для consumer apps. 30%+ — creator-first apps (Twitter, TikTok). < 5% — read-only (news sites).

По cohort

SELECT
    DATE_TRUNC('month', u.created_at)::DATE AS cohort_month,
    COUNT(DISTINCT u.user_id) AS cohort_size,
    COUNT(DISTINCT CASE WHEN c.user_id IS NOT NULL THEN u.user_id END) AS posted,
    COUNT(DISTINCT CASE WHEN c.user_id IS NOT NULL THEN u.user_id END) * 100.0
    / NULLIF(COUNT(DISTINCT u.user_id), 0) AS ugc_pct
FROM users u
LEFT JOIN creators c USING (user_id)
WHERE u.created_at >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY DATE_TRUNC('month', u.created_at)
ORDER BY cohort_month;

Старые cohorts должны иметь higher UGC (lifetime contributors). Если падает — onboarding broken.

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

По типу контента

SELECT
    post_type,
    COUNT(DISTINCT author_id) AS creators,
    COUNT(*) AS posts
FROM posts
WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY post_type
ORDER BY creators DESC;

Photo posts обычно 5× больше creators чем longform. Different barriers to entry.

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

Ошибка 1. UGC rate based on registered. Many register, few active. Better: rate on active.

Ошибка 2. Counting comments как UGC. Comments easier than posts. Track separately.

Ошибка 3. Включать spam. Spam-creators inflate UGC rate. Verify quality.

Ошибка 4. Snap-shot vs cumulative. Lifetime UGC rate (ever created) высокий. Recent (last 30d) ниже.

Ошибка 5. UGC rate at startups. Early users часто all creators (FOMO). UGC rate 50%+ может быть artifact.

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

FAQ

Какой UGC rate good?

Twitter / TikTok: 30-50%. Instagram: 15-25%. News-style apps: 1-3%.

90-9-1 правило?

90% lurk, 9% comment, 1% create. Industry rule of thumb, не закон.

UGC включает stories?

Yes — temporary content тоже UGC. Track как separate type.

UGC rate падает?

Часто после feature launches (e.g., new format). Investigate funnel.

Можно ли увеличить UGC rate?

Через creator tools, contests, gamification. 10-30% bump possible.