TGViewer
Data Science. SQL hub Data Science. SQL hub @sqlhub · 36K subscribers
Post #1963 4.45K
🧠 Хитрая 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 соединяем первую и вторую покупку клиента.
- Далее фильтруем, оставляя только те, у кого вторая покупка была не позднее 7 дней после первой.

⚠️ Важно:

- Клиенты с одной покупкой исключаются — у них нет второй.
- Мы не ищем любые две покупки в пределах 7 дней, а только первую и вторую по порядку.
- INTERVAL '7 days' обеспечивает корректное сравнение дат.

@sqlhub
  • ❤ 9
  • 👍 4
  • 🔥 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 →