TGViewer
SQL и Анализ данных SQL и Анализ данных @databases_tg · 12.5K subscribers
Post #1435 1.15K
⚡️ SQL-задача с подвохом

Что вернёт этот запрос в PostgreSQL?


CREATE TABLE payments (
id int,
amount int
);

INSERT INTO payments VALUES
(1, 100),
(2, 100),
(3, 200);

SELECT
id,
amount,
SUM(amount) OVER (ORDER BY amount) AS total
FROM payments
ORDER BY id;


Многие ожидают:


1 | 100 | 100
2 | 100 | 200
3 | 200 | 400


Но результат будет другим:


1 | 100 | 200
2 | 100 | 200
3 | 200 | 400


По умолчанию PostgreSQL использует окно
RANGE ... CURRENT ROW. Строки с одинаковым amount считаются равными соседями и попадают в окно вместе.

Для построчного накопления нужно указать
ROWS:


SUM(amount) OVER (
ORDER BY amount, id
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
)


#SQL #PostgreSQL #Database
  • 👍 6
  • 🔥 2
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 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 →