**Контекст:** Стриминговый сервис хранит разные типы контент-взаимодействий в отдельных таблицах. Нужно построить единую ленту активности для аналитики.
**Данные:**
[см. код в задании]
**Задание:**
1. Объедините все три типа событий в единую ленту с колонками: `user_id`, `event_type`, `video_id` (NULL для лайков комментариев), `event_ts`
2. Для каждого пользователя за последние 7 дней посчитайте:
- Количество просмотров, комментариев и лайков
- Общее время просмотра в минутах
- Самое частое действие (mode)
Структура для ориентира — реальные значения из эталонного решения.
CREATE TABLE video_views (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
video_id INT NOT NULL,
watch_seconds INT NOT NULL,
viewed_at TIMESTAMP NOT NULL
);
CREATE TABLE comments (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
video_id INT NOT NULL,
comment_text TEXT NOT NULL,
created_at TIMESTAMP NOT NULL
);
CREATE TABLE likes (
id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
content_type VARCHAR(20) NOT NULL, -- 'video', 'comment'
content_id INT NOT NULL,
created_at TIMESTAMP NOT NULL
);
UNION ALL нормализация CTE несколько таблиц
Это задание для уровня Middle. Для middle-аналитиков с опытом 1-3 года, требует уверенного владения темой и понимания edge cases.
Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: UNION ALL, нормализация, CTE, несколько таблиц.
На реальном собеседовании на подобную задачу отводится 15-30 минут — оцениваются подход, корректность, обработка edge cases. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.
На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.
← Все задания