В forwarding у номера может быть включена безусловная переадресация на другой номер (forward_to). Тот номер тоже может переадресовывать дальше. Конечный номер — тот, у которого переадресации нет.
Для каждого номера из forwarding верните msisdn, final_number — куда в итоге попадёт вызов, и hops — число переходов. Если цепочка зацикливается (A → B → A), верните NULL в обеих колонках.
Порядок — по msisdn.
В работе: Поддержка разбирает жалобу «до меня не дозвониться»: вызов уходит по цепочке переадресаций или крутится в петле.
Таблицы
forwarding — включённые переадресации; у номера не больше одной
| Колонка | Тип | Что значит |
|---|---|---|
msisdn | text | номер с переадресацией |
forward_to | text | куда переадресован |
Пример: данные
forwarding · 3 строки
| msisdn | forward_to |
|---|---|
| 79160000001 | 79160000002 |
| 79160000002 | 79160000003 |
| 79160000004 | 79160000003 |
Ожидаемый ответ
| msisdn | final_number | hops |
|---|---|---|
| 79160000001 | 79160000003 | 2 |
| 79160000002 | 79160000003 | 1 |
| 79160000004 | 79160000003 | 1 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
msisdn, final_number, hops
Источник: на данных абонентской базы: безусловная переадресация вызовов. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.