Рассчитать проценты на postgresql с помощью триггера / функции
В настоящее время я работаю над простым банковским приложением.
Я создал базу данных postgresql с правильными таблицами и функциями.
Моя проблема в том, что я не уверен, как рассчитать процентную ставку по счетам. У меня есть функция, которая подскажет мне баланс по времени.
Если мы говорим, что у нас есть 1-месячный период, где я хочу рассчитать проценты по счету. Баланс выглядит так:
February Balance
1. $1000
3. $300
10. $700
27. $500
Balance on end of month: $500
Мои первые мысли состоят в том, чтобы сделать цикл for, повторяя цикл с 1-го числа месяца до последнего дня месяца и добавляя проценты, заработанные за этот конкретный день подряд.
Функция, которую я хочу использовать в конце месяца, должна выглядеть примерно так: addInterest(startDate,endDate,accountNumber)
, который должен вставить одну строку в таблицу, добавив заработанную ставку.
Может ли кто-нибудь привести меня на правильный путь или показать мне хорошие учебные ресурсы по PL/PGSQL?
редактировать
Я немного читал о курсорах. Должен ли я использовать курсор, чтобы пройти через таблицу?
Я нахожу немного запутанным использование курсоров, кто-нибудь здесь с некоторыми хорошо объясненными примерами?
2 ответа
Существуют различные способы расчета процентов в банковской системе.
Проценты = Баланс х Ставка х Дни / Год
Типы Балансов
- Периодический совокупный баланс
- Ежедневный совокупный баланс
Типы ставок
- Динамическая ставка с фиксированной ставкой (в зависимости от баланса)
- Динамическая скорость (в зависимости от срока)
- Динамическая скорость (по расписанию)
Типы Дней / Расписания
- Обработка в конце дня (один день)
- Обработка на конец месяца (один месяц)
- Обработка в конце квартала (три месяца)
- Конец половины обработки (шесть месяцев)
- Обработка на конец года (один год)
Формула года
- Год может состоять из 365 или 366 дней.
- Ваш пользователь может захотеть переопределить количество дней в году, сохранить отдельное свойство переменной year в вашем приложении.
Заключение
Проценты следует рассчитывать как рутинное задание. Наилучшим подходом было бы то, что он работал бы по расписанию в зависимости от частоты настройки отдельных учетных записей.
В руководстве есть раздел о циклах и циклическом просмотре результатов запроса. Есть также примеры триггерных функций, написанных на pl/pgsql. Руководство очень полное, это лучший источник, который я знаю.