Среднее транзакций за 72 часа от первой

Senior SQL Соцсети

Условие задания

**Контекст:** Задание по мотивам реального тестового в VK. Продуктовый аналитик изучает раннюю вовлечённость: сколько в среднем транзакций совершает пользователь в первые 72 часа после первой покупки.

**Данные:**

[см. код в задании]

| user_id | item_name | ts | price |
|---------|--------------------|---------------------|--------|
| 1 | Стикерпак | 2025-01-10 09:00:00 | 99.00 |
| 1 | Подписка Музыка | 2025-01-10 14:30:00 | 199.00 |
| 1 | Голоса 100 | 2025-01-11 10:00:00 | 490.00 |
| 1 | Стикерпак 2 | 2025-01-15 16:00:00 | 149.00 |
| ... | ... | ... | ... |

**Задание:**

1. Для каждого пользователя определите время первой транзакции
2. Посчитайте количество транзакций в пределах 72 часов от первой (включая саму первую)
3. Рассчитайте среднее количество транзакций за 72 часа по всем пользователям
4. Выведите промежуточные данные (user_id, first_ts, txn_count_72h) и итоговое среднее

Пример данных

Структура для ориентира — реальные значения из эталонного решения.

CREATE TABLE transactions (
    id SERIAL PRIMARY KEY,
    user_id INT NOT NULL,
    item_name VARCHAR(200) NOT NULL,
    ts TIMESTAMP NOT NULL,
    price NUMERIC(10,2) NOT NULL,
    quantity INT NOT NULL DEFAULT 1
);

INSERT INTO transactions (user_id, item_name, ts, price, quantity) VALUES
(1, 'Стикерпак',       '2025-01-10 09:00:00', 99.00,  1),
(1, 'Подписка Музыка', '2025-01-10 14:30:00', 199.00, 1),
(1, 'Голоса 100',      '2025-01-11 10:00:00', 490.00, 1),
(1, 'Стикерпак 2',     '2025-01-15 16:00:00', 149.00, 1),
(2, 'Подписка Музыка', '2025-01-08 11:00:00', 199.00, 1),
(2, 'Голоса 50',       '2025-01-08 18:00:00', 250.00, 1),
(2, 'Стикерпак',       '2025-01-09 09:00:00', 99.00,  1),
(2, 'VK Клипы PRO',    '2025-01-09 15:00:00', 299.00, 1),
(2, 'Голоса 100',      '2025-01-12 10:00:00', 490.00, 1),
(3, 'Голоса 50',       '2025-01-05 08:00:00', 250.00, 1),
(3, 'Стикерпак',       '2025-01-05 12:00:00', 99.00,  1),
(4, 'Подписка Музыка', '2025-02-01 10:00:00', 199.00, 1),
(5, 'Стикерпак',       '2025-01-20 14:00:00', 99.00,  1),
(5, 'Голоса 100',      '2025-01-20 18:00:00', 490.00, 1),
(5, 'VK Клипы PRO',    '2025-01-21 09:00:00', 299.00, 1);

Темы

оконные функции MIN OVER INTERVAL подзапросы воронка

Подсказки

Все тестовые задания →

Частые вопросы

Какой уровень знаний нужен для задачи "Среднее транзакций за 72 часа от первой"?

Это задание для уровня Senior. Senior-уровень — глубокое понимание темы, опыт решения нестандартных задач, обсуждение trade-off на собеседовании.

На каких собеседованиях встречается такая задача?

Подобные задания в категории «SQL» регулярно дают на собеседованиях аналитика данных в Яндекс, Сбер, Ozon, Авито, Тинькофф, Wildberries, T-Bank, X5, ВТБ и других крупных IT-компаниях. Тематика: оконные функции, MIN OVER, INTERVAL, подзапросы, воронка.

Сколько времени даётся на решение?

На реальном собеседовании на подобную задачу отводится 30-60 минут с обсуждением подходов, оптимизаций и trade-off. Для тренировки рекомендуем сначала решить самостоятельно, потом сверить с эталонным решением и подсказками.

Где ещё потренироваться по теме «SQL»?

На zasqlpython.ru есть 425 SQL задач в песочнице с автопроверкой кода, конспекты SQL для аналитика, AI мок-собеседование с разбором ваших ответов.

← Все задания