**Контекст:** Маркетплейс анализирует пути пользователей: какие источники трафика (organic, cpc, email, direct, social) ведут к покупке. Нужно восстановить цепочку визитов до каждой транзакции.
**Данные:**
[см. код в задании]
Визит с has_transaction = TRUE — это визит, в котором совершена покупка. У пользователя может быть несколько транзакций.
**Задание:**
1. Для каждого визита с транзакцией постройте цепочку источников всех визитов от предыдущей транзакции (или от первого визита) до текущей включительно
2. Цепочка в формате: 'organic → cpc → email → direct' (через STRING_AGG)
3. Выведите user_id, дату транзакции, цепочку, количество визитов в цепочке, первый источник (first touch) и последний источник (last touch)
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE visits (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
source VARCHAR(50) NOT NULL, -- 'organic', 'cpc', 'email', 'direct', 'social'
visit_date TIMESTAMP NOT NULL,
has_transaction BOOLEAN NOT NULL DEFAULT FALSE
);
STRING_AGG оконные функции атрибуция ARRAY_AGG
Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: STRING_AGG, оконные функции, атрибуция, ARRAY_AGG.
На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания