T-SQL | Аналитический подход как альтернативное решение |
В этом разделе приведен вариант аналитического решения (альтернатива рекурсивному), на примере рекурсивной функции расчета суммы банковского вклада и полученных по нему доходов (см. функцию dbo.OverallAmount(@years integer, @accrual float, @amount float).
Приведенная в примере рекурсивная функция, переписана под аналитический метод решения:
/* Есть длительность вклада, % годового дохода, сумма вклада Вычисляем общую сумму банковского вклада и полученных по нему доходов @years – длительность вклада @accrual – начисляемый годовой доход (%) @amount – изначальная сумма вклада */ Create function dbo.OverallAmountSYMBOLIC(@years integer, @accrual float, @amount float) Returns float Begin Return @amount * Power(1+@accrual, @years) -- сумма вклада помноженная на доход (1+@accrual) -- в степени относительно длительности вклада (@years) -- (1 год в первой степени, 2 года во второй степени и так далее) End
Например:
OverallAmountSYMBOLIC(0, 0.10, 100 000) = 100 000 * 1,100 = 100 000 * 1 = 100 000 OverallAmountSYMBOLIC(1, 0.10, 100 000) = 100 000 * 1,101 = 100 000 * 1,10 = 110 000 OverallAmountSYMBOLIC(2, 0.10, 100 000) = 100 000 * 1,102 = 100 000 * 1,10 * 1,10 = 121 000
|