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

86. Резкие подъёмы цены в карточке

Лёгкая

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

Найдите изменения, при которых новая цена не меньше чем на 20 % выше предыдущей цены той же карточки. Верните nm_id, changed_at, old_price, new_price, growth_pct (рост в процентах с 1 знаком). Порядок — по nm_id, затем changed_at.

В работе: Модерация акций: карточки, где «скидка» получилась за счёт подъёма цены накануне.

Таблицы

price_history — одна строка — одно изменение цены

КолонкаТипЧто значит
nm_idintартикул
changed_attimestampвремя изменения
price_rubnumericновая цена

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

price_history · 7 строк

nm_idchanged_atprice_rub
70012026-10-01T09:00:001000
70012026-10-05T09:00:001250
70012026-10-10T09:00:001300
70012026-10-15T09:00:00990
70022026-10-02T09:00:002000
70022026-10-08T09:00:002400
70022026-10-12T09:00:002350

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

nm_idchanged_atold_pricenew_pricegrowth_pct
70012026-10-05T09:00:001000125025
70022026-10-08T09:00:002000240020
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
nm_id, changed_at, old_price, new_price, growth_pct
оконные функцииJOIN

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

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