Суммарное время просмотра фильмов с устройств smart_tv

Соедините события просмотра с devices, отфильтруйте тип smart_tv и сгруппируйте по user_id и movie_id. SUM(duration_sec) даст суммарные секунды просмотра для каждой пары.

Короткий ответ

Что ответить на собеседовании

Соедините события просмотра с devices, отфильтруйте тип smart_tv и сгруппируйте по user_id и movie_id. SUM(duration_sec) даст суммарные секунды просмотра для каждой пары.

Подробный разбор

Ответ с пояснениями

Условие

Имеются две таблицы: watch_events и devices. В таблице watch_events фиксируются события просмотра пользователями и содержат следующие поля: • user_id — идентификатор пользователя; • movie_id — идентификатор фильма; • duration_sec — количество секунд, проведённых за просмотром; • dev_id — идентификатор устройства, с которого был произведён просмотр. Таблица devices хранит сведения о типах устройств. Составьте SQL‑запрос, который для каждого пользователя подсчитает суммарное время (в секундах) просмотра каждого фильма, если просмотр происходил с устройств типа smart_tv.

Ответ

Соедините события просмотра с devices, отфильтруйте тип smart_tv и сгруппируйте по user_id и movie_id. SUM(duration_sec) даст суммарные секунды просмотра для каждой пары.

Предположим, идентификатор устройства хранится в devices.id, а тип — в devices.type:

SELECT w.user_id, w.movie_id, SUM(w.duration_sec) AS total_seconds
FROM watch_events AS w
JOIN devices AS d ON d.id = w.dev_id
WHERE d.type = 'smart_tv'
GROUP BY w.user_id, w.movie_id;

Имена столбцов devices нужно сверить с реальной схемой. Её id должен быть уникальным, иначе соединение умножит события. Запрос считает сумму зарегистрированных длительностей, а не уникальное время фильма и не устраняет повторные события автоматически.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее