SQL Senior Моделирование: Кимбалл, звезда, SCD обновлено

Собрать SCD 2 из ежедневных снимков

Условие

В snap_customer ежедневные снимки тарифа клиентов: строка на каждый день, когда клиент был в выгрузке. Постройте периоды SCD 2: для каждого клиента непрерывные отрезки с одинаковым тарифом. Новый период начинается при смене тарифа. Пропуски дней внутри одного тарифа не разрывают период.

Колонки: customer_id, plan, valid_from (первый день периода), valid_to (первый день следующего периода этого клиента, у последнего периода 9999-12-31). Сортировка по customer_id, valid_from. Порядок строк важен.

Как подойти

Подсказки: 2
  1. LAG(plan) найдёт смену тарифа.
  2. Нарастающая сумма флагов смены даёт номер периода.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.