TGViewer
Data Science. SQL hub Data Science. SQL hub @sqlhub · 36K subscribers
Post #1961 4.21K
🧠 Хитрая SQL-задача: вторая покупка в течение 7 дней

У вас есть таблица purchases:


purchases (
id SERIAL PRIMARY KEY,
customer_id INT,
purchase_date DATE,
amount NUMERIC
)


Задача:
Найти всех клиентов, у которых вторая покупка произошла не позднее, чем через 7 дней после первой.

Показать:

- customer_id
- first_purchase_date
- second_purchase_date

✅ Решение:


WITH ordered_purchases AS (
SELECT
customer_id,
purchase_date,
ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY purchase_date) AS rn
FROM purchases
),

first_second_purchases AS (
SELECT
p1.customer_id,
p1.purchase_date AS first_purchase_date,
p2.purchase_date AS second_purchase_date
FROM ordered_purchases p1
JOIN ordered_purchases p2
ON p1.customer_id = p2.customer_id
AND p1.rn = 1
AND p2.rn = 2
)

SELECT *
FROM first_second_purchases
WHERE second_purchase_date <= first_purchase_date + INTERVAL '7 days';


🔍 Пояснение:

- ROW_NUMBER() присваивает каждой покупке номер в пределах одного клиента.
- Мы соединяем первую и вторую покупки клиента через self-join.
- В финальном SELECT фильтруем только те пары, где разница между датами ≤ 7 дней.

⚠️ Важно:

- Клиенты с одной покупкой отфильтруются (у них нет второй).
- Сравнение выполняется через INTERVAL '7 days', чтобы корректно обрабатывать даты.
- Это не поиск любых двух покупок в пределах 7 дней, а именно проверка интервала между первой и второй.

@sqlhub
  • 👍 28
  • ❤ 8
  • 🥰 2
More from @sqlhub
  1. Sep 25, 2026Тысячи ИИ-агентов одновременно читают продакшен-базу. Что происходит с PostgreSQL? Google…
  2. Sep 24, 2026Softmax простыми словами: что значат 66,5% в ответе нейросети? Softmax простыми словами: C…
  3. Sep 24, 2026🔥Один слой данных вместо цепочки копий между системами В традиционной аналитической инфра…
  4. Sep 23, 2026⚡️ SQL-задача с опасным подвохом Какой баланс получит аккаунт после выполнения запроса в P…
  5. Sep 22, 2026🌟 Samsone: открытые аудиоязыковые модели для смартфонов Samsung опубликовали Samsone - се…
  6. Sep 22, 2026Объектное хранилище в эпоху быстрых данных Объём данных, с которыми нужно работать, растёт…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →