Задать вопрос
@mefisto661

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

Есть задача: За каждую 1000р в клиент получает 1 бонус. Если потратит к примеру 3400р - получит 3 бонуса, а 400р суммируются к следующей покупке. Есть таблица покупок (id клиента, дата и время, Сумма покупки).
Необходимо с помощью рекурсии вычислить количество бонусов, полученных за каждую покупку.
  • Вопрос задан
  • 318 просмотров
Подписаться 2 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 2
profesor08
@profesor08
А рекурсия зачем? Это делается подсчетом суммы и делением это суммы на 1000, из результата взять целое
SELECT FLOOR(SUM([price]) / 1000) FROM [table] GROUP BY [id]
Ответ написан
@mefisto661 Автор вопроса
Вот решение с помощью оконных функций:
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;


Было:5e84ae9c62b8f626541182.jpeg
Стало:5e84aea67d9f1840232675.jpeg

Нужно получить такой же результат, только с помощью рекурсии
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы