Как посчитать сумму с помощью рекурсии в SQL?

Есть задача: За каждую 1000р в клиент получает 1 бонус. Если потратит к примеру 3400р - получит 3 бонуса, а 400р суммируются к следующей покупке. Есть таблица покупок (id клиента, дата и время, Сумма покупки). Необходимо с помощью рекурсии вычислить количество бонусов, полученных за каждую покупку.

Решение с помощью оконных функций:

SELECT ID, DAY, VALUE, (LAG(comm_sum, 0,0) OVER (PARTITION BY ID ORDER BY DAY ASC)) - (LAG(comm_sum, 1,0) OVER (PARTITION BY ID ORDER BY DAY ASC)) AS CAHSBACK FROM (SELECT ID, DAY, VALUE, 
(SUM(VALUE) OVER (PARTITION BY ID ORDER BY DAY ASC))/1000 AS comm_sum FROM task3)AS a;

Было: Было:

Стало: Стало:

Как получить тот же результат, только с помощью рекурсии?


Ответы (0 шт):