Просроченные заявки в SQL: почему открытые тикеты нельзя выбрасывать из SLA

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

Как разобрать ситуацию

Выберите момент среза и целевой лимит. Для закрытого тикета сравниваем deadline с временем закрытия, для открытого — с моментом среза. В статье метрика отвечает на вопрос о нарушении установленного срока, а не об обычном среднем времени решения. Приостановки по ожиданию клиента должны учитываться отдельно, если они предусмотрены контрактом.

Пример и ожидаемый результат

Первый тикет имеет срок до 2 октября и всё ещё открыт на 4 октября. Второй закрыли 3 октября при том же сроке. Третий имеет срок 5 октября. Просрочены первые два; будущий срок третьего не является нарушением.

WITH tickets(id,deadline,closed_at) AS(VALUES(1,'2026-10-02',NULL),(2,'2026-10-02','2026-10-03'),(3,'2026-10-05',NULL)) 
SELECT id 
FROM tickets 
WHERE COALESCE(closed_at,'2026-10-04')>deadline 
ORDER BY id;

Запрос возвращает тикеты 1 и 2. Открытая просрочка остаётся видимой, хотя у неё ещё нет значения closed_at.

Проверка перед применением

  • Проверьте закрытие ровно в deadline и зафиксируйте включительность границы.
  • Исключите отменённые обращения только по согласованному правилу, а не ради улучшения процента.
  • Разведите календарный и рабочий срок: выходные могут менять результат.

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

Границы решения

Даты здесь нормализованы и не содержат часовых поясов. Для почасовых SLA нужны полные временные отметки и календарь обслуживания. Сам запрос не определяет, кто виноват в нарушении и какие санкции применимы.

Если запросы уже пишутся, а уверенности в кардинальности, оконных рамках и проверке результата не хватает, продолжить практику можно в нашем платном курсе

Продвинутый SQL: сложные запросы и задачи для собеседований. Перед записью сравните программу со своей задачей и подготовкой.

Техническая справка: www.sqlite.org: документация, www.sqlite.org: документация.

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