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

208. Активные объявления на первое число месяца

Средняя

В listings — объявления о сдаче квартир. Объявление активно с момента published_at включительно до closed_at не включительно. Если closed_at пустой, объявление до сих пор висит.

Для каждого первого числа месяца с 1 января по 1 июня 2026 года посчитайте, сколько объявлений было активно ровно в 00:00 этого дня. Месяцы, где активных не было, выводите с нулём. Верните month_start (date), active, порядок — по month_start.

В работе: Срез предложения на рынке аренды на начало месяца для отчёта Авито Недвижимости.

Таблицы

listings — одна строка — одно объявление

КолонкаТипЧто значит
listing_idintключ
citytextгород
published_attimestampпубликация
closed_attimestampснятие, NULL — активно

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

listings · 5 строк

listing_idcitypublished_atclosed_at
1Екатеринбург2025-12-20T14:00:002026-02-10T09:00:00
2Екатеринбург2026-01-15T11:30:002026-03-02T18:00:00
3Самара2026-02-25T20:00:00NULL
4Самара2026-03-05T10:00:002026-03-28T12:00:00
5Уфа2026-04-30T23:00:002026-05-15T08:00:00

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

month_startactive
2026-01-011
2026-02-012
2026-03-012
2026-04-011
2026-05-012
2026-06-011
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 4 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
month_start, active
датыLEFT JOINNULLGROUP BY

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