Войти Регистрация
Data base

99. Нарастающий итог минут прослушивания

Лёгкая

В listens — прослушивания: seconds — сколько секунд играл трек.

Для каждого пользователя и каждого дня, когда он что-то слушал, верните user_id, day, minutes — минуты за день и total_minutes — сколько минут набежало с первого дня по этот день включительно. Минуты — с одним знаком.

Порядок: user_id, затем day.

В работе: Прогресс-бар «вы послушали 1000 минут» в итогах года.

Таблицы

listens — одна строка — одно прослушивание

КолонкаТипЧто значит
listen_idintключ
user_idintпользователь
listened_attimestampначало
secondsintдлительность, сек

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

listens · 5 строк

listen_iduser_idlistened_atseconds
172026-01-03T08:00:00215
272026-01-03T08:04:00190
372026-01-05T22:10:00240
482026-01-04T12:00:0095
582026-01-04T23:59:0061

Ожидаемый ответ

user_iddayminutestotal_minutes
72026-01-036,86,8
72026-01-05410,8
82026-01-042,62,6
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
user_id, day, minutes, total_minutes
оконные функциинарастающий итогGROUP BY

Источник: на данных Музыки: прослушивания по дням. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.