Как посчитать MQL to SQL Conversion в SQL
Содержание:
Зачем MQL→SQL Conversion
MQL (Marketing Qualified Lead) → SQL (Sales Qualified Lead) — handoff между marketing и sales. Conversion rate показывает quality MQLs. Низкий = marketing brings unqualified, sales rejecting. Should be 30-50%.
Формула
MQL→SQL = SQL_count / MQL_count × 100%Cohort by MQL creation month.
Базовый расчёт
WITH cohort AS (
SELECT
lead_id,
mql_at,
sql_at,
DATE_TRUNC('month', mql_at) AS cohort_month
FROM leads
WHERE mql_at >= CURRENT_DATE - INTERVAL '6 months'
)
SELECT
cohort_month,
COUNT(*) AS mql_count,
COUNT(*) FILTER (WHERE sql_at IS NOT NULL) AS sql_count,
COUNT(*) FILTER (WHERE sql_at IS NOT NULL)::NUMERIC * 100 / COUNT(*) AS mql_to_sql_pct
FROM cohort
GROUP BY cohort_month
ORDER BY cohort_month;По source
SELECT
lead_source,
COUNT(*) AS mqls,
COUNT(*) FILTER (WHERE sql_at IS NOT NULL) AS sqls,
COUNT(*) FILTER (WHERE sql_at IS NOT NULL)::NUMERIC * 100 / COUNT(*) AS conversion_pct
FROM leads
WHERE mql_at >= CURRENT_DATE - INTERVAL '90 days'
AND mql_at < CURRENT_DATE - INTERVAL '30 days' -- give time для conversion
GROUP BY lead_source
HAVING COUNT(*) >= 20
ORDER BY conversion_pct DESC;High-conversion sources — invest more. Low → re-qualify upstream.
Time-to-convert
SELECT
AVG(EXTRACT(EPOCH FROM (sql_at - mql_at)) / 86400) AS avg_days,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (sql_at - mql_at)) / 86400) AS median_days,
PERCENTILE_CONT(0.9) WITHIN GROUP (ORDER BY EXTRACT(EPOCH FROM (sql_at - mql_at)) / 86400) AS p90_days
FROM leads
WHERE mql_at IS NOT NULL
AND sql_at IS NOT NULL
AND mql_at >= CURRENT_DATE - INTERVAL '6 months';Long time-to-convert = slow sales response. Should be < 7 days.
По AE / SDR
SELECT
assigned_sdr,
COUNT(*) AS mqls_assigned,
COUNT(*) FILTER (WHERE sql_at IS NOT NULL) AS qualified_to_sql,
COUNT(*) FILTER (WHERE sql_at IS NOT NULL)::NUMERIC * 100 / COUNT(*) AS conversion_pct,
AVG(EXTRACT(EPOCH FROM (sql_at - mql_at)) / 86400) FILTER (WHERE sql_at IS NOT NULL) AS avg_qualify_days
FROM leads
WHERE mql_at >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY assigned_sdr
HAVING COUNT(*) >= 20
ORDER BY conversion_pct DESC;Funnel: MQL → SQL → Opp → Won
WITH cohort AS (
SELECT lead_id, mql_at FROM leads WHERE mql_at >= CURRENT_DATE - INTERVAL '12 months'
)
SELECT
DATE_TRUNC('month', c.mql_at) AS cohort,
COUNT(*) AS mql,
COUNT(*) FILTER (WHERE l.sql_at IS NOT NULL) AS sql,
COUNT(*) FILTER (WHERE l.opportunity_created) AS opp,
COUNT(*) FILTER (WHERE l.won) AS won,
-- Conversion rates
COUNT(*) FILTER (WHERE l.sql_at IS NOT NULL)::NUMERIC * 100 / COUNT(*) AS mql_to_sql,
COUNT(*) FILTER (WHERE l.opportunity_created)::NUMERIC * 100 / NULLIF(COUNT(*) FILTER (WHERE l.sql_at IS NOT NULL), 0) AS sql_to_opp,
COUNT(*) FILTER (WHERE l.won)::NUMERIC * 100 / NULLIF(COUNT(*) FILTER (WHERE l.opportunity_created), 0) AS opp_to_won
FROM cohort c
JOIN leads l USING (lead_id)
GROUP BY DATE_TRUNC('month', c.mql_at)
ORDER BY cohort;Частые ошибки
Ошибка 1. Definition of MQL drift. Marketing tightens MQL → less but higher quality. Tracking continuity critical.
Ошибка 2. Sales rejecting valid MQLs. Sales says «not qualified» without проверки. Quarterly review reasons.
Ошибка 3. Window too short. Some MQLs convert 60+ days later. Window cutoff misses.
Ошибка 4. Self-qualified leads. Inbound demo requests = MQL = SQL nearly instant. Skews avg.
Ошибка 5. Re-qualification. Same person, new MQL months later. Dedup carefully.
Связанные темы
- Как посчитать lead velocity rate в SQL
- Как посчитать win rate в SQL
- Как посчитать sales cycle length в SQL
- Как посчитать pipeline coverage в SQL
FAQ
Какой MQL→SQL ok?
30-50% — average. 60%+ — well-qualified MQLs. < 20% — definition mismatch.
Time-to-qualify?
< 24 hours для high-intent. < 7 days для general MQL.
MQL ≠ Demo Request?
Yes. Demo Request — высокий intent. Other MQLs (whitepaper, webinar) — lower intent.
Conversion падает — что делать?
- Redefine MQL criteria with sales. 2) Improve lead scoring. 3) SDR training. 4) Better content.
MQL → SQL → Opp same?
Sometimes SQL = Opportunity = closed/won/lost. Or SQL → Opp stage. Org-dependent.