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

91. Самый слушаемый трек в каждом жанре

Средняя

В tracks — каталог, в listens — прослушивания: seconds — сколько секунд трек играл. Прослушивание засчитывается, если трек играл от 30 секунд.

Для каждого жанра найдите трек с наибольшим числом засчитанных прослушиваний: genre, track_id, title, listens. Если лидеров несколько с одинаковым числом, верните всех.

Жанры, где засчитанных прослушиваний нет, не показывайте. Порядок: genre, затем track_id.

В работе: Подборка «Хиты жанра» на главной: кого ставить первым.

Таблицы

tracks — каталог треков

КолонкаТипЧто значит
track_idintключ
titletextназвание
artisttextисполнитель
genretextжанр

listens — одна строка — один запуск трека

КолонкаТипЧто значит
listen_idintключ
user_idintслушатель
track_idintтрек
listened_attimestampначало
secondsintсколько играл

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

tracks · 4 строки

track_idtitleartistgenre
1Северный ветерПолина Гришинаинди
2Трамвай №7Белые ночиинди
3Ноль градусовАртём Сурковрэп
4КольцеваяМКАД-бэндрэп

listens · 6 строк

listen_iduser_idtrack_idlistened_atseconds
11112025-11-01T08:00:00190
21212025-11-01T09:00:0045
31322025-11-01T10:00:00200
41432025-11-02T21:00:00180
51532025-11-02T21:10:00160
61642025-11-02T22:00:00170

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

genretrack_idtitlelistens
инди1Северный ветер2
рэп3Ноль градусов2
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
genre, track_id, title, listens
оконные функциитоп-N в группеJOIN

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

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