TGViewer
SQL и Анализ данных SQL и Анализ данных @databases_tg · 12.5K subscribers
Post #1260 3.07K
🖥 SQL задачка на внимательность (и одна классическая ловушка)

У тебя есть таблица логов. Нужно найти пользователей, которые заходили 3 дня подряд.

Таблица:
- user_id
- event_date (DATE)

Задача:
Верни user_id и дату третьего дня серии (то есть конец 3-дневной цепочки).

Ловушка:
1) В один день может быть несколько событий - их нельзя считать как разные дни
2) Дни должны идти подряд по календарю (не “3 записи подряд”)


-- PostgreSQL / MySQL 8+ (через window functions)
WITH uniq_days AS (
SELECT DISTINCT user_id, event_date
FROM user_events
),
grp AS (
SELECT
user_id,
event_date,
event_date
- INTERVAL '1 day' * (ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY event_date))
AS anchor
FROM uniq_days
),
runs AS (
SELECT
user_id,
MIN(event_date) AS start_day,
MAX(event_date) AS end_day,
COUNT(*) AS days_cnt
FROM grp
GROUP BY user_id, anchor
)
SELECT user_id, end_day AS third_day
FROM runs
WHERE days_cnt >= 3
ORDER BY user_id, third_day;


Почему это работает:
- DISTINCT убирает повторы в один день
- “anchor” превращает подряд идущие даты в одну группу
- дальше считаем длину серии и берём конец
  • 👍 6
  • 🔥 4
  • ❤ 3
  • 🏆 1
More from @databases_tg
  1. Sep 26, 2026UPDATE — оператор обновления данных в MySQL 🗂️ Если в таблице нужно изменить значение в у…
  2. Sep 25, 2026🧠 SQL-задача с подвохом Есть таблица транзакций: CREATE TABLE transactions ( id int PRIMA…
  3. Sep 25, 2026Как облегчить работу ИТ-аналитика уже сейчас — без долгосрочных перестроек процессов? Обсу…
  4. Sep 24, 2026🐧 Linux Cheat Sheet - шпаргалка по командам Linux Самая удобная шпаргалка по Linux и Bash…
  5. Sep 23, 2026⚡️ SQL-задача с подвохом Что вернёт этот запрос в PostgreSQL? CREATE TABLE payments ( id i…
  6. Sep 17, 2026🖥 Race condition в SQL: как продать последний товар дважды? Race condition в SQL: Дио и Д…
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 →