Собесов

Сбербанк (DE) — преобразовать витрину режимов работы сотрудников в дневной формат

SQLPivot и календарьСложнаяMiddle

Условие

Витрина режимов работы сотрудников (work_mode):

tab_num, start_date, finish_date,
wday_type01..wday_type05,  -- режим для пн..пт
wplace_type,               -- категория рабочего места
end_da                     -- альтернативная дата окончания

Преобразовать витрину к формату (tab_num, ymd_date, to_be_at_office) за период 01.09.2020 – 31.12.2020, по всем датам диапазона на каждого сотрудника.

Правила:

  • Если finish_date = '31.12.9999' и end_da не пуст — использовать end_da.
  • to_be_at_office ∈ {0, 1, NULL}:
    • 0 — должен быть дома;
    • 1 — должен быть в офисе;
    • NULL — режима нет на эту дату ИЛИ это сб/вс.
  • Для wplace_type ∈ {3, 4}:
    • 3 — «неделя через неделю»: 1-я неделя режима — полностью дистанционная, 2-я — в офисе, и т.д.
    • 4 — «две недели через две»: первые 2 недели — дист., следующие 2 — офис, и т.д.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти