使用触发器/函数计算对 postgresql 的兴趣

Posted

技术标签:

【中文标题】使用触发器/函数计算对 postgresql 的兴趣【英文标题】:Calculate interest on postgresql with trigger/function 【发布时间】:2011-07-03 15:02:04 【问题描述】:

我目前正在开发一个简单的银行应用程序。

我已经建立了一个带有正确表和函数的 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 的好学习资源?

编辑

我已经阅读了一些关于游标的内容。我应该使用光标在表格中走动吗?

我发现使用游标有点混乱,这里有人有一些解释清楚的例子吗?

【问题讨论】:

【参考方案1】:

manual 有一个关于循环和遍历查询结果的部分。还有用 pl/pgsql 编写的触发函数的例子。手册很全,是我所知道的最好的来源。

【讨论】:

我以前看过手册。它似乎是循环的一个很好的资源。但我也在考虑财务部分。这些计算在实际系统中是如何进行的?【参考方案2】:

银行系统的利息计算方式多种多样。

利息 = 余额 x 利率 x 天数/年

余额类型

定期总结余 每日总余额

费率类型

Fixed Rate Dynamic Rate(根据余额) 动态速率(根据条款) 动态速率(根据计划)

日期/时间表的类型

日终处理(一天) 月末处理(一个月) 季末处理(三个月) 半处理结束(六个月) 年终处理(一年)

年份公式

一年可以由 365 或 366 天组成。 您的用户可能想要覆盖一年中的天数,在您的应用程序中维护一个单独的年份变量属性。

结论

利息应该作为例行任务来计算。最好的方法是根据个人帐户的频率设置按计划运行。

【讨论】:

优秀的答案。我用这个公式构建了一个函数,结果非常好。结果有点低效,因为我必须根据账户开始时的数据计算该期间每一天的账户余额。 (我知道,这很容易通过每笔交易的余额或类似的东西来解决)这是一个学校项目,我已经提交了。感谢您的澄清和出色的回答。

以上是关于使用触发器/函数计算对 postgresql 的兴趣的主要内容,如果未能解决你的问题,请参考以下文章

如何查看本地安装的Postgresql版本号

PostgreSQL入门,PostgreSQL和mysql

postgresql是啥数据库

PostgreSQL 相同的触发器函数在 INSERT 上更新到不同的表(使用相同的模式)

PostgreSQL 函数和触发器在 postgresql 中包含更改

Postgresql 学习记录,模式,分区表,触发器,事务,窗口函数,视图,建表,约束等