**Компания:** Сбер
**Контекст:** В DWH хранится справочник клиентов. Когда клиент меняет город проживания, нужно сохранить историю изменений (SCD Type 2). Текущая таблица:
[см. код в задании]
**Задание:**
1. Напишите SQL для закрытия текущей записи клиента и вставки новой при смене города
2. Напишите запрос для получения актуальных данных по всем клиентам
3. Напишите запрос для получения города клиента на конкретную дату
Структура для ориентира — реальные значения из эталонного решения.
-- Шаг 1: закрыть текущую запись
UPDATE dim_customer
SET valid_to = CURRENT_DATE - INTERVAL '1 day',
is_current = FALSE
WHERE customer_id = 12345
AND is_current = TRUE;
-- Шаг 2: вставить новую версию
INSERT INTO dim_customer (customer_id, name, city, valid_from, valid_to, is_current)
SELECT customer_id, name, 'Москва', CURRENT_DATE, '9999-12-31', TRUE
FROM dim_customer
WHERE customer_id = 12345
AND valid_to = CURRENT_DATE - INTERVAL '1 day'
ORDER BY valid_from DESC
LIMIT 1;
SCD Type 2 DWH измерения историчность
Это задание для уровня easy. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «data_engineering» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: SCD, Type 2, DWH, измерения, историчность.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть другие задания в категории «data_engineering», продуктовые кейсы, справочник метрик, AI мок-собеседование с разбором ваших ответов.
← Все задания