Четыре таблицы: users, categories, listings и blocks — история блокировок. Блокировка действует, пока blocks.unblocked_at равен NULL; снятая блокировка пользователя не ограничивает.
Отчёт строим 15 марта 2026 года за последние 7 дней, включая 15-е: с 9 по 15 марта. Верните пользователей без действующей блокировки, которые за это время подали больше пяти объявлений в категории «Авто»: user_id, name, listings_cnt.
Порядок — по listings_cnt по убыванию, затем по user_id.
В работе: Поиск перекупщиков, которые под видом частников массово выкладывают машины.
Таблицы
users — пользователи
| Колонка | Тип | Что значит |
|---|---|---|
user_id | int | ключ |
name | text | имя |
city | text | город |
categories — категории
| Колонка | Тип | Что значит |
|---|---|---|
category_id | int | ключ |
name | text | название |
listings — объявления
| Колонка | Тип | Что значит |
|---|---|---|
listing_id | int | ключ |
user_id | int | автор |
category_id | int | категория |
created_at | timestamp | когда подано |
blocks — история блокировок
| Колонка | Тип | Что значит |
|---|---|---|
block_id | int | ключ |
user_id | int | кого |
blocked_at | timestamp | когда |
unblocked_at | timestamp | когда сняли, NULL — действует |
Пример: данные
users · 4 строки
| user_id | name | city |
|---|---|---|
| 1 | Артём Гусев | Краснодар |
| 2 | Олег Сафин | Казань |
| 3 | Ирина Белова | Тверь |
| 4 | Руслан Ахмедов | Махачкала |
categories · 2 строки
| category_id | name |
|---|---|
| 1 | Авто |
| 2 | Электроника |
listings · 24 строк
| listing_id | user_id | category_id | created_at |
|---|---|---|---|
| 1 | 1 | 1 | 2026-03-10T12:00:00 |
| 2 | 1 | 1 | 2026-03-10T15:00:00 |
| 3 | 1 | 1 | 2026-03-10T18:00:00 |
| 4 | 1 | 1 | 2026-03-10T21:00:00 |
| 5 | 1 | 1 | 2026-03-11T00:00:00 |
| 6 | 1 | 1 | 2026-03-11T03:00:00 |
| 101 | 2 | 1 | 2026-03-11T11:00:00 |
| 102 | 2 | 1 | 2026-03-11T12:00:00 |
| 103 | 2 | 1 | 2026-03-11T13:00:00 |
| 104 | 2 | 1 | 2026-03-11T14:00:00 |
| 105 | 2 | 1 | 2026-03-11T15:00:00 |
| 201 | 3 | 1 | 2026-03-12T13:00:00 |
| 202 | 3 | 1 | 2026-03-12T14:00:00 |
| 203 | 3 | 1 | 2026-03-12T15:00:00 |
| 204 | 3 | 1 | 2026-03-12T16:00:00 |
| 205 | 3 | 2 | 2026-03-12T17:00:00 |
| 206 | 3 | 2 | 2026-03-12T18:00:00 |
| 301 | 4 | 1 | 2026-03-13T09:00:00 |
| 302 | 4 | 1 | 2026-03-13T10:00:00 |
| 303 | 4 | 1 | 2026-03-13T11:00:00 |
| 304 | 4 | 1 | 2026-03-13T12:00:00 |
| 305 | 4 | 1 | 2026-03-13T13:00:00 |
| 306 | 4 | 1 | 2026-03-13T14:00:00 |
| 307 | 4 | 1 | 2026-03-13T15:00:00 |
blocks · 1 строка
| block_id | user_id | blocked_at | unblocked_at |
|---|---|---|---|
| 1 | 4 | 2026-03-14T20:00:00 | NULL |
Ожидаемый ответ
| user_id | name | listings_cnt |
|---|---|---|
| 1 | Артём Гусев | 6 |
SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
user_id, name, listings_cnt
Источник: на данных Авито, по мотивам открытой подборки вопросов. Условие пересказано своими словами.
Посмотреть данные, проверить кусок запроса. На зачёт не влияет.
Здесь появится результат отправки.