Здравствуйте!
Немогу понять как это можно сделать и можно ли вобще?
Есть таблица звонков, она состоит из следующих полей:
time (содержит время)
src (номер источник в формате либо 8XXXXXXXXXX либо XXX)
dst (номер назначения в формате либо 7XXXXXXXXXX либо XXX)
desposition (ANSWERED или NO ANSWER)
Нужно понять на какой номер перезванивать, для этого я используя GROUP BY и MAX(time) пробегаюсь по полю src исключаю внутринние номера (те которые XXX ), группирую все одинаковые номера телефонов, в вывод пытаются попасть самые последние записи отобранных номеров, которые отсекаются по desposition и вывожу только те которые NO ANSWER
В итоге получаю в src только те телефоны которые так и не дозвонились, но вот незадача, а что если им уже перезванивали, как мне теперь имея данный результат сравнить его по номеру и времени с полем dst при условии еще, что там форматы номеров разные, в dst начинаются на 7 а не на 8, и выводить только те номера, для которых нет более свежих записей в поле dst со значением desposition - ANSWERED ?
Можно ли вобще такое провернуть одним запросом?
Вот запрос который выводит пропущенные:
SELECT max(time), src, dst, disposition
FROM mytable
where disposition = 'NO ANSWER'
group by src
order by 1 DESC;