Выбирая положительное совокупное значение и игнорируя отрицательное в Postgres SQL

Я должен применить определенное преобразование fn (аргумент) . Здесь аргумент равен значению , но не тогда, когда он отрицательный. Когда вы получаете первое отрицательное значение , вы «ждете», пока оно не суммируется с последовательными значениями, и эта сумма станет положительной. Затем вы выполняете fn (аргумент) . См. Таблицу, которую я хочу получить:

value      argument 
---------------------
  2           2      
  3           3      
 -10          0      
  4           0
  3           0
  10          7
  1           1

Я мог бы просуммировать все значения и применить к сумме fn , но fn может отличаться для разных строк, и это важно знать номер строки для выбора конкретной fn.

Как и нужно, решение Postgres SQL выглядит как подходящие оконные функции, но у меня еще недостаточно опыта, чтобы написать выражение, которое это делает. Фактически, я, к сожалению, новичок в "мышлении в sql". Я полагаю, что это можно легко сделать императивным способом, но я пока не хочу писать хранимую процедуру.

5
задан zamza 13 August 2011 в 09:35
поделиться