Avito: листинги без просмотров за 7 дней

Средняя Агрегации Avito

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

Таблицы listings(id, created_at TEXT) и views(listing_id, view_date TEXT). Найдите листинги, созданные до 2026-02-21, у которых НЕТ просмотров в последние 7 дней до 2026-03-01 (т.е. 2026-02-23..2026-02-29 включительно — но также допустим listings без просмотров вовсе). Выведите id, created_at. Сортировка по id.

Схема данных

CREATE TABLE listings (id INTEGER PRIMARY KEY, created_at TEXT); CREATE TABLE views (listing_id INTEGER, view_date TEXT);

Темы

NOT EXISTS WHERE BETWEEN

Подсказки

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

Задача «Avito: листинги без просмотров за 7 дней» учит агрегировать данные через GROUP BY, считать суммы, средние и количества по сегментам и фильтровать группы через HAVING. Такие задачи встречаются на собеседованиях в Avito и других IT-компаниях. Уровень средний — типичная боевая задача на уверенное владение SQL.

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

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

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

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