TGViewer
SQL и Анализ данных SQL и Анализ данных @databases_tg · 12.5K subscribers
Post #1025 3.29K
🧠 Хитрая SQL-задача на собеседование: "Пропущенный день"

Представь таблицу заказов:

orders (
id INT,
user_id INT,
order_date DATE
)


🎯 Задача: Найти пользователей, у которых были два заказа, сделанных с пропуском ровно одного дня
(например: 1 мая и 3 мая), но без других заказов между ними.

🛑 Не учитываются пары, где между ними был хоть один заказ.

---



💡 Решение с LEAD() + NOT EXISTS:


WITH ranked_orders AS (
SELECT
user_id,
order_date,
LEAD(order_date) OVER (PARTITION BY user_id ORDER BY order_date) AS next_order
FROM orders
),
valid_pairs AS (
SELECT
user_id
FROM ranked_orders ro
WHERE DATE_DIFF(ro.next_order, ro.order_date, DAY) = 2
AND NOT EXISTS (
SELECT 1 FROM orders o
WHERE o.user_id = ro.user_id
AND o.order_date > ro.order_date
AND o.order_date < ro.next_order
)
)
SELECT DISTINCT user_id FROM valid_pairs;


🔍 Подвох: многие находят заказы “через день”, но забывают проверить, не было ли чего-то между ними.
Такие задачки отлично проверяют знание оконных функций и аналитического мышления.
  • ❤ 11
  • 👍 6
  • 🔥 2
  • 👾 1
More from @databases_tg
  1. Oct 2, 2026Как SQLite превращает числа в текст в 2 раза быстрее? Трюк с парами цифр Обычно число пере…
  2. Oct 2, 2026В субботу, 17 октября, Москва станет точкой притяжения для всех специалистов в области Rec…
  3. Oct 1, 2026Жиз
  4. Sep 30, 2026📝 5 уровней ИИ-агентов: от промпта до продакшена Context, loop, Jev, harness и evals: раз…
  5. Sep 26, 2026UPDATE — оператор обновления данных в MySQL 🗂️ Если в таблице нужно изменить значение в у…
  6. Sep 25, 2026🧠 SQL-задача с подвохом Есть таблица транзакций: CREATE TABLE transactions ( id int PRIMA…
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 →