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

19. Сколько объявлений заблокировано сейчас

Средняя

Объявление проходит модерацию несколько раз: после публикации, после правки, по жалобе. Каждое решение — строка в moderation: verdict = approved или blocked, у блокировки есть reason.

Текущий статус — последнее решение по decided_at; если два решения приняты в одну секунду, последним считается то, у которого больше decision_id.

Верните, сколько объявлений сейчас заблокировано по каждой причине: reason, listings. Порядок — по listings по убыванию, затем по reason.

В работе: Дашборд модерации: какие причины блокировок сейчас держат объявления вне выдачи.

Таблицы

moderation — одна строка — одно решение модератора или автомата

КолонкаТипЧто значит
decision_idintключ, растёт со временем записи
listing_idintобъявление
decided_attimestampвремя решения
verdicttextapproved / blocked
reasontextпричина блокировки, NULL у approved

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

moderation · 7 строк

decision_idlisting_iddecided_atverdictreason
15012026-04-01T10:00:00approvedNULL
25022026-04-01T10:05:00blockedзапрещённый товар
35032026-04-01T10:07:00blockedконтакты в описании
45032026-04-01T14:30:00approvedNULL
55042026-04-02T09:00:00blockedконтакты в описании
65052026-04-02T09:10:00approvedNULL
75052026-04-03T18:00:00blockedконтакты в описании

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

reasonlistings
контакты в описании2
запрещённый товар1
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
reason, listings
дедупликацияоконные функциитоп-N в группе

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

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