Вы строите дневной бакет 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разбор после ответа
В таблице events(user_id, created_at) поле created_at имеет тип отметки времени с долями секунд. Как корректно посчитать количество событий по дням?
Тренировать SQL в Telegram

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