Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Есть Таблица с записями всех звонков прошедших через станцию. На нашей станции (freeswith) каждый звонок имеет два плеча "inbound" и "outbound" и соответственно звонки разделены на 2 части.  inbound - это звонок от "А" (вызывающего) абонента на станцию и outbound - это звонок со станции на "Б" (принимающего) абонента. соответственно в таблице они фигурируют как 2 звонка один  inbound и второй outbound. Также на станции есть функция очереди звонков если все операторы заняты. Тогда звонок "как бы" пускается по кругу и станция "как бы звонит сама себе". и появляются еще дополнительные  inbound и outbound. 

Необходимо составить таблицу в которой строки будут обобщены, т.е. в каждой строке будет идти  inbound и outbound. при этом бывают ситуации когда на один  inbound может приходится несколько  outbound (это возникает при переводе вызова на другого сотрудника).

База данных postgress

в таблице имеются множество колонок. для обработки понадобятся след. колонки

first_uuid

fifo_originate_uuid

sip_call_id

billsec

примерно последовательность запросов по одному звонку

1. получение всех  inbound в которых поле sip_call_id не пустое и получение из этих строу параметра first_uuid  и fifo_originate_uuid  и запись в таблицу

2. получаем все  outbound с найденными first_uuid в которых есть значение sip_call_id и есть значение в billsec ненулевое и дописываем в таблицу к inbound в эту же строку

3. берем из inbound значение fifo_originate_uuid (смотри пункт 1) и ищем по нему все возможные записи с уникальными first_uuid (это будут звонки из очереди или переведенные). Не забываем связать вновь полученные first_uuid с первичным

4. получаем по новым first_uuid звонки с outbound в которых есть значение sip_call_id и есть значение в billsec не нулевое и дописываем в таблицу к inbound (первичному) в эту же строку. если записей outbound будет несколько - дописываем их в порядке начала разговора по полю start_stamp. сначала запись с более ранним временем старта.

нужна именно 1 строка с  inbound и outbound (отбаундов может быть до 4). Нужна минимизация запросов в базу данных (т.е. цикличность не комильфо). Без транзитных таблиц в базе (через кэш). Выборка по базе в файлике. Делать все SQL запросами и Python для обобщения

6 лет назад
guest_15287238561124
6 лет в сервисе
Был
2 года назад
1 отзыв