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

84. Рейтинг товара по последним версиям отзывов

Средняя

В reviews — отзывы. Когда покупатель редактирует отзыв, появляется новая строка. В рейтинге товара учитывается только последняя версия отзыва каждого покупателя (по created_at, при равном времени — с большим review_id).

Посчитайте рейтинг — среднюю оценку stars с 2 знаками — для товаров, у которых не меньше 3 актуальных отзывов. Верните nm_id, reviews, rating, порядок по rating по убыванию, затем по nm_id.

В работе: Рейтинг на карточке и в сортировке выдачи: продавец оспаривает цифру, если она не сходится с его подсчётом.

Таблицы

reviews — отзывы и их новые версии

КолонкаТипЧто значит
review_idintключ
nm_idintартикул
buyer_idintпокупатель
starsintоценка 1–5
created_attimestampвремя версии

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

reviews · 12 строк

review_idnm_idbuyer_idstarscreated_at
15001152026-08-01T10:00:00
25001242026-08-02T10:00:00
35001322026-08-03T10:00:00
45001342026-08-10T10:00:00
55002452026-08-04T10:00:00
65002552026-08-05T10:00:00
75003612026-08-06T10:00:00
85003632026-08-07T10:00:00
95003752026-08-08T10:00:00
105004852026-08-09T10:00:00
115004952026-08-09T11:00:00
1250041042026-08-09T12:00:00

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

nm_idreviewsrating
500434,67
500134,33
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
nm_id, reviews, rating
дедупликацияоконные функцииGROUP BYHAVING

Источник: на данных Wildberries: отзывы и рейтинг товаров. Условие пересказано своими словами.

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