@twink132

Как поправить SQL запрос (аудит качества тех поддержки)?

Проектирую бота в функционал, которого входит статистика по обращениям в каналах филиала и отправка сообщений работников в канал в зависимости от выбранного филиала регистрации.
Структура БД SQLite:
Таблица "For Posts": id, username (first name + last name пользователя), user_id (айди пользователя), created_at (время создания поста по UNIX TIME), text (текст сообщения, если был), message (message.id в канале), chanel_id (айди канала куда отправилось обращение)
Таблица "For Reply":id, username (firstname +last name пользователя), user_id (айди пользователя), reated_at (время создания поста по UNIX TIME), text (текст сообщения, если был), reply to id (message.id сообщения в канале в котором пишется комментарий), message (message.id комментария на пост), chanel_id (айди канала куда отправилось обращение).
Как считается статистика:
Интервал: дата статистики которая необходима пользователю
ФИО: ФИО сотрудника отрабатывающего обращение
Всего сообщений: обращения взятые в работу до 30 секунд + после 30 секунд
До 30 секунд: обращения где диспетчер ответил в комментариях к посту ДО 30 секунд
После 30 секунд: обращения где диспетчер ответил в комментариях к посту ПОСЛЕ 30 секунд
SL % (Service level): Доля обращений взятых в работу до 30 секунд

Как делается запрос в БД:
spoiler
def collect_analytics_by_user(message):
    validationResult = check_user_date(message.text)
    cursor5 = conn.cursor()
    query = "SELECT strftime('%d-%m-%Y', datetime(for_posts.created_at, 'unixepoch', 'localtime')), for_reply.user_id, for_reply.created_at - for_posts.created_at  as diff, for_reply.username FROM for_posts LEFT JOIN for_reply ON for_reply.reply_to_id = for_posts.message_id"
    query = query + " WHERE for_reply.created_at BETWEEN ? AND ? GROUP BY for_posts.message_id ORDER BY for_posts.created_at DESC"

Запрос возращает следующие кортежи:
6296fed79044c562383139.png

где diff это та разница между написания постом и ответом на него.
сейчас получается такая картина, что при соответствии фактическому кол-ву постов за за запрошенный день (считал вручную) верно считается кол-во постов, но не верно вычисляется доля обращений взятых в работу до 30 секунд.
Плюс в некоторых каналах все считается корректно, а в некоторых нет (ответы до 30 секунд и после 30).
В чем может быть причина?
При точечном анализе бд, выявил что Unix-time в БД собирается корректно и разница не боле 180 секунд между ответом на пост.
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы