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

34. Доля досмотров фильмов в KION

Средняя

В views — сеансы просмотра: зритель может смотреть фильм частями в разные вечера. Зритель досмотрел фильм, если сумма watched_sec по всем его сеансам этого фильма не меньше 90 % длительности (films.duration_min).

Для каждого фильма, у которого есть хотя бы один зритель, верните title, viewers — число разных зрителей, finished — сколько досмотрели, finish_pct — долю досмотревших в процентах с 1 знаком.

Порядок — по finish_pct убыванию, затем по title.

В работе: Подборка для главной KION: фильмы, которые зрители реально досматривают, а не бросают на 15-й минуте.

Таблицы

films — каталог

КолонкаТипЧто значит
film_idintключ
titletextназвание
duration_minintдлительность, мин

views — сеансы просмотра

КолонкаТипЧто значит
view_idintключ
user_idintзритель
film_idintфильм
watched_secintпросмотрено за сеанс, с
started_attimestampначало сеанса

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

films · 3 строки

film_idtitleduration_min
1Метель над Ладогой100
2Последний рейс на Анадырь120
3Сторож маяка90

views · 5 строк

view_iduser_idfilm_idwatched_secstarted_at
111160002025-11-01T20:00:00
212112002025-11-01T21:00:00
313155002025-11-02T20:00:00
411272002025-11-03T20:00:00
51426002025-11-03T21:00:00

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

titleviewersfinishedfinish_pct
Метель над Ладогой3266,7
Последний рейс на Анадырь2150
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
title, viewers, finished, finish_pct
условная агрегацияGROUP BYCTEJOIN

Источник: на данных онлайн-кинотеатра KION: просмотры и длительность фильмов. Условие пересказано своими словами.

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