Вы строите дневной бакет DATE_TRUNC('day', created_at) AS day. Какое выражение даст ключ для JOIN на «тот же день прошлой недели»?

ADATE_TRUNC('day', created_at) - INTERVAL '1 day'
BDATE_TRUNC('day', created_at) - INTERVAL '1 week'
CDATE_TRUNC('week', created_at) - INTERVAL '1 week'
DDATE_TRUNC('day', created_at) + INTERVAL '1 week'
Правильный ответ. Для сопоставления по дням сдвигайте уже усечённый дневной бакет на INTERVAL '1 week'.

Разбор

Если ключом является начало дня (DATE_TRUNC('day', ...)), то для периода-к-периоду удобнее сдвигать этот ключ: - INTERVAL '1 week'. Сдвиг недельного бакета (DATE_TRUNC('week', ...)) даст начало недели, а не тот же день недели.

Проверь себя · 1/3разбор после ответа
В таблице users(signup_at) поле signup_at типа date. Нужно получить дату «через один календарный месяц» после регистрации. Какое выражение корректнее?
Тренировать SQL в Telegram

Ещё вопросы по теме «Даты и время»