Все материалы
Продуктовая аналитикапрактикумсредний

Интервал между событиями в SQL: LAG и время до следующего шага

Как посчитать время между действиями пользователя через LAG, найти длинные паузы и связать их с конверсией.

КПКейсПрактика7 сентября 2026 г.9 мин

Воронка показывает факт перехода, но не время ожидания. Без интервала команда не знает, проблема в отсутствии интереса, медленном интерфейсе или внешнем процессе. Как понять, на каком шаге пользователь ждёт слишком долго?

Когда пригодится подход

Как понять, на каком шаге пользователь ждёт слишком долго?

Воронка показывает факт перехода, но не время ожидания. Без интервала команда не знает, проблема в отсутствии интереса, медленном интерфейсе или внешнем процессе.

Если между checkout_started и payment_success проходит больше десяти минут, сравни этот хвост по устройству и способу оплаты.

Договорённости до расчёта

Одна строка результата должна описывать одну сущность и один период. Перед агрегацией проверь, что исходные строки не повторяют объект и что фильтры не меняют знаменатель незаметно.

Отсортируй события, добавь LAG или LEAD, затем агрегируй интервалы по шагу и сегменту. Не смешивай повторные попытки без отдельного номера попытки.

Если показатель строится по событиям, отдельно проверь повторную отправку, идентичность пользователя и часовой пояс. Если данные приходят из бизнес-системы, сопоставь техническое поле с тем, как команда реально принимает решение.

Проверяемый результат
вопрос → объект → период → расчёт → проверка → решение

Любой пропущенный шаг может изменить смысл итогового числа.

Пример с данными

Если между checkout_started и payment_success проходит больше десяти минут, сравни этот хвост по устройству и способу оплаты.

Не копируй пример в рабочий отчёт вслепую. Сначала замени названия таблиц и полей, проверь кардинальность связей и запиши, какие строки должны попасть в результат. Хорошая адаптация сохраняет логику, но делает допущения видимыми.

Минимальная схема проверки
ШагЧто проверитьЗачем
Определениеобъект и периодне менять вопрос
РасчётМинутыполучить воспроизводимое число
Ревьюкрайний случай и baselineне перепутать шум с сигналом
sqlПосчитать паузу между событиями
SELECT user_id, event_name, event_at - LAG(event_at) OVER (PARTITION BY user_id ORDER BY event_at) AS gap\nFROM events\nORDER BY user_id, event_at;

Ограничения метода

Неправильный порядок, события из разных сценариев и timestamp с разными timezone дают отрицательные или бессмысленные интервалы.

Отдельно протестируй пустой результат, NULL, дубль, граничную дату и объект без связанной записи. Эти случаи не являются редкими исключениями: именно они чаще всего превращают рабочий показатель в красивую, но неверную цифру.

  • Не смешивай зрелые и незрелые периоды без отдельной подписи.
  • Не заменяй проверку качества тем, что запрос просто выполнился.
  • Не делай причинный вывод из одного разреза.

Сравнение на графике

График здесь нужен не для украшения статьи. Он помогает увидеть форму сигнала: тренд, разрыв между сегментами, хвост распределения или этап, на котором теряется объект. Сначала прочитай оси и единицы, затем сравни с таблицей и только после этого формулируй вывод.

На визуализации «Интервал между событиями в SQL: LAG и время до следующего шага» сравнивай не только максимальное значение. Проверь, одинаковы ли базы, не скрыта ли неполная дата и не меняется ли знаменатель от категории к категории.

Интервал между событиями в SQL: LAG и время до следующего шага

Условный учебный пример для проверки формы сигнала, а не данные конкретной компании.

Минуты

Самостоятельная проверка

Собери десять переходов, нарочно добавь retry и сравни median и p95 времени до шага.

После упражнения напиши вывод в двух версиях. Первая — техническая: какие строки и условия дали результат. Вторая — для команды: что изменилось, насколько это надёжно и какое действие стоит проверить. Если эти версии противоречат друг другу, вернись к определению показателя.

  • Собери контрольный пример из пяти-десяти строк.
  • Сверь итог с независимым способом расчёта.
  • Проверь хотя бы один крайний случай.
  • Зафиксируй дату, версию схемы и ограничение.

Следующий шаг

Используй интервал для поиска трения. Для причинного вывода соединяй его с логами ошибок, UX-событиями или контролируемым изменением.

Сильный аналитический материал не обещает абсолютной уверенности. Он показывает, как получить число, где оно может ошибиться и какое решение можно принять уже сейчас. Такой формат хорошо переносится в дашборд, SQL-тренажёр, собеседование и рабочее обсуждение с командой.

Продолжить чтение
Вся библиотека