У меня есть следующие данные в таблице:
col1
---
1
2
5
9
10
Я хочу обновить col2
в таблице с текущей суммой разницы между col1
и предыдущим значением col1
минус 1
col2 = col2.prev + col1 - col1.prev - 1
Результат будет:
col1 | col2
--------------
1 | 0
2 | 0
5 | 2
9 | 5
10 | 5
Я попытался использовать оконную функцию:
SELECT sum(col1 - lag(col1) OVER (ORDER BY col1) - 1) AS col2 FROM table1
Но это недопустимо - ОШИБКА: агрегатвызовы функций не могут содержать вызовы оконных функций
Есть ли другой способ сделать это?Я знаю, что мог бы легко написать функцию для циклического перемещения по строкам, но из того, что я читал, складывается впечатление, что этот метод в большинстве случаев неэффективен и не рекомендуется.Пожалуйста, поправьте меня, если у меня неправильное впечатление.