Дедупликация товарного фида: оставить актуальную строку

Средняя Дедупликация Спортмастер

Условие задачи

Внешний фид product_feed льёт обновления по товарам с дублями. Для каждого SKU оставь только одну — самую свежую — строку по updated_at. Если у одного SKU две строки с одинаковым updated_at (полный дубль) — оставь ту, у которой больше feed_row_id. Верни: feed_row_id, sku, price, stock, updated_at. Сортируй по sku.

Схема данных

CREATE TABLE product_feed (
  feed_row_id   INTEGER PRIMARY KEY,
  sku           TEXT NOT NULL,
  price         REAL NOT NULL,
  stock         INTEGER NOT NULL,
  updated_at    TEXT NOT NULL
);

Темы

window deduplication row_number cte tie-break

Подсказки

Что проверяет эта задача

Задача «Дедупликация товарного фида: оставить актуальную строку» учит дедуплицировать строки, оставляя нужную запись (ROW_NUMBER / DISTINCT ON). Такие задачи встречаются на собеседованиях в Спортмастер и других IT-компаниях. Уровень средний — типичная боевая задача на уверенное владение SQL.

Как подступиться к решению

Сначала разберись со схемой данных и пойми, какой результат нужен на выходе. Определи, какие таблицы и поля задействованы, и собирай запрос пошагово: фильтрация → соединение или группировка → итоговый отбор и сортировка. Проверь результат на крайних случаях — NULL, дубликаты, пустые группы. Свой запрос сразу прогоняешь автопроверкой в интерактивной SQL-песочнице на реальной базе (SQLite и PostgreSQL 16 прямо в браузере).

Разбор темы с примерами — в гайде «Дедупликация в SQL». Хочешь системно с нуля — пройди бесплатный курс «SQL с нуля».

Решить в интерактивной SQL-песочнице → ← Все SQL-задачи