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

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

Зачем escalation rate

Высокий escalation rate = Tier-1 агенты не справляются (плохой training или сложные тикеты). Низкий = всё хорошо или escalation процесс broken. Идеально: 10-20% Tier-1 → Tier-2. > 30% — investigate; < 5% — может быть hidden quality issue.

Формула

escalation_rate = escalated_tickets / total_tier_1_tickets

Tier-1 = first-line support. Escalated = передан в Tier-2 / engineering / specialist.

Escalation в SQL

WITH t1_tickets AS (
    SELECT ticket_id, opened_at, opened_tier
    FROM support_tickets
    WHERE opened_tier = 'tier_1'
      AND opened_at >= CURRENT_DATE - INTERVAL '30 days'
),
escalated AS (
    SELECT DISTINCT ticket_id
    FROM ticket_events
    WHERE event_type = 'tier_change'
      AND new_tier IN ('tier_2', 'tier_3', 'engineering')
)
SELECT
    (SELECT COUNT(*) FROM t1_tickets) AS total_t1,
    (SELECT COUNT(*) FROM escalated WHERE ticket_id IN (SELECT ticket_id FROM t1_tickets)) AS escalated,
    (SELECT COUNT(*) FROM escalated WHERE ticket_id IN (SELECT ticket_id FROM t1_tickets))::NUMERIC * 100
    / NULLIF((SELECT COUNT(*) FROM t1_tickets), 0) AS escalation_rate_pct;

По tier и категории

SELECT
    issue_category,
    COUNT(*) AS t1_total,
    COUNT(*) FILTER (WHERE escalated) AS escalated,
    COUNT(*) FILTER (WHERE escalated)::NUMERIC * 100 / COUNT(*) AS escalation_pct
FROM tier_1_with_escalation_flag
WHERE opened_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY issue_category
HAVING COUNT(*) >= 30
ORDER BY escalation_pct DESC;

Категория «billing dispute» обычно high (требует accountant). «Password reset» — low (Tier-1 решает).

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

Причины эскалации

SELECT
    escalation_reason,
    COUNT(*) AS occurrences,
    AVG(EXTRACT(EPOCH FROM (escalated_at - opened_at)) / 3600) AS avg_hours_before_escalation
FROM escalation_events
WHERE escalated_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY escalation_reason
ORDER BY occurrences DESC;

Top reasons:

  • «requires admin access» → grant tier-1 admin
  • «product bug» → engineering involve
  • «refund > limit» → finance approval
  • «complex enterprise contract» → AM involve

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

Ошибка 1. Считать escalation как failure. Иногда escalation — правильный action (complex issue нужен specialist). Не все escalations плохи.

Ошибка 2. Все категории одна планка. Billing категория требует higher escalation rate. Password reset — почти 0%. Не сравнивайте по absolute.

Ошибка 3. Сравнивать tier 1 vs tier 2 escalation. Tier-2 escalation в engineering — другая метрика. Сегментируйте.

Ошибка 4. Reopens как escalations. Reopen — customer вернулся. Escalation — internal tier-change. Разные.

Ошибка 5. Игнорировать selection bias. Самые сложные тикеты идут к best agents → их «escalation rate ниже». Stratify by category.

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

FAQ

Какой escalation rate норма?

Tier-1 → Tier-2: 10-20%. Tier-2 → Engineering: 2-5%. Зависит от продукта.

Скрывает ли escalation rate self-service?

Yes — если self-service работает, low-difficulty не попадает в Tier-1, escalation rate looks higher.

Снижать escalation через обучение?

Yes — playbook, knowledge base, decision tree.

Escalation влияет на CSAT?

Yes — multi-tier handoff бывает confusing customer. Но иногда escalation = better resolution.

AHT и escalation correlation?

Часто negatively: long AHT → больше investigation → больше escalation rate.