В contacts — записи о клиентах из разных систем банка: client_id, phone, mail, любое поле может быть пустым. Две записи связаны, если у них совпадает хотя бы одно из трёх полей. Связь транзитивна: если K01 совпадает с K02 по телефону, а K02 с K03 по почте, то K01 и K03 тоже связаны.
Найдите все записи, связанные с записью K01, включая её саму. Пустые поля ничего не связывают: две записи без почты не становятся родственными. Верните rec_key, порядок — по rec_key. Если K01 в таблице нет, ответ пустой.
В работе: Склейка клиентского профиля из CRM, заявок и мобильного банка перед проверкой на мошенничество.
Таблицы
contacts — одна строка — одна запись из какой-то системы
| Колонка | Тип | Что значит |
|---|---|---|
rec_key | text | ключ записи |
client_id | text | id клиента в системе, может быть NULL |
phone | text | телефон, может быть NULL |
mail | text | почта, может быть NULL |
Пример: данные
contacts · 6 строк
| rec_key | client_id | phone | |
|---|---|---|---|
| K01 | C101 | +79161112233 | NULL |
| K02 | C101 | NULL | anna.v@mail.ru |
| K03 | C205 | NULL | anna.v@mail.ru |
| K04 | C309 | +79035550000 | NULL |
| K05 | C205 | +79260001122 | NULL |
| K06 | NULL | NULL | NULL |
Ожидаемый ответ
| rec_key |
|---|
| K01 |
| K02 |
| K03 |
| K05 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
rec_key
Источник: тестовое аналитика данных (Middle) в Сбере, сборник No Data No Growth. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.