TGViewer
SQL и Анализ данных SQL и Анализ данных @databases_tg · 12.5K subscribers
Post #1438 771
🧠 SQL-задача с подвохом

Есть таблица транзакций:


CREATE TABLE transactions (
id int PRIMARY KEY,
user_id int,
ts timestamp,
amount int
);


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

Начальный баланс — 0.

Но есть важное условие:

все операции с одинаковым ts происходят одновременно, поэтому порядок строк внутри одного timestamp учитывать нельзя.

Пример:


10:00 +100
11:00 -80
11:00 -30
11:00 +20
12:00 +50


В 11:00 изменение баланса должно считаться как:


-80 - 30 + 20 = -90


То есть баланс:


10:00 → 100
11:00 → 10
12:00 → 60


Наивный вариант:


SUM(amount) OVER (
PARTITION BY user_id
ORDER BY ts
)


может дать неправильную логику, если считать операции с одинаковым ts по отдельности.

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