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

215. Заказы Еды по местным суткам города

Сложная

Время заказа orders.created_at хранится как timestamptz — абсолютный момент. В cities у каждого города указан часовой пояс tz: Москва — Europe/Moscow, Новосибирск — Asia/Novosibirsk, Владивосток — Asia/Vladivostok.

Для каждого города из cities и каждого дня с 1 по 3 марта 2026 года посчитайте заказы, оформленные в этот день по местному времени города. Дни без заказов выводите с нулём. Верните city, local_date (date), orders, порядок — по city, затем local_date. Ответ не должен зависеть от настройки TimeZone сессии.

В работе: Планирование курьерских смен: в 01:00 по Владивостоку в Москве ещё вчерашний вечер.

Таблицы

cities — города и их часовые пояса

КолонкаТипЧто значит
citytextключ
tztextчасовой пояс IANA

orders — одна строка — один заказ

КолонкаТипЧто значит
order_idintключ
citytextгород
created_attimestamptzмомент оформления
total_rubnumericсумма

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

cities · 3 строки

citytz
МоскваEurope/Moscow
НовосибирскAsia/Novosibirsk
ВладивостокAsia/Vladivostok

orders · 7 строк

order_idcitycreated_attotal_rub
1Москва2026-03-01T09:30:00+00:001240
2Москва2026-03-01T20:40:00+00:00890
3Москва2026-03-03T06:15:00+00:00560
4Новосибирск2026-03-01T19:30:00+00:001320
5Новосибирск2026-03-02T03:00:00+00:00700
6Владивосток2026-02-28T15:20:00+00:002100
7Владивосток2026-03-03T14:30:00+00:00650

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

citylocal_dateorders
Владивосток2026-03-011
Владивосток2026-03-020
Владивосток2026-03-030
Москва2026-03-012
Москва2026-03-020
Москва2026-03-031
Новосибирск2026-03-010
Новосибирск2026-03-022
Новосибирск2026-03-030
Как проверяем Ваш запрос выполняется в PostgreSQL 16 прямо в браузере на 5 наборах данных: пример выше и скрытые — с NULL, повторами и пустыми таблицами. Нужен один SELECT, можно с WITH. Сравниваем значения по порядку колонок, названия колонок могут быть свои. Порядок строк важен — как задано в условии.
city, local_date, orders
датыLEFT JOINGROUP BYNULL

Источник: наша задача на данных Яндекса: заказы Яндекс Еды в разных часовых поясах. Условие пересказано своими словами.