在mysql中处理具有到期日期的多个余额

时间:2018-06-02 17:45:22

标签: mysql database algorithm

问题: 考虑一家银行向其用户发放多个到期余额的账户,即您账户中的贷记金额将在六个月后到期。假设你今天有500美元(2018年6月2日),这个余额将于(2018年12月2日)到期。 现在考虑一下客户的以下余额表。

id  balance createdAt     expiry
001     100     4th November 2017 4th May 2018
002     200     2nd January 2018  2nd July 2018
003     100     10th Feb 2018     10th August 2018

如果用户希望今天(2018年6月2日)在某些产品上花费250,则应从所有可用的未到期余额中逐步减去这250个单位,并且必须清除过期的行。

因此购买后的余额表应为

id  balance createdAt     expiry
003     50  10th Feb 2018 10th August 2018

我的解决方案

  1. 以到期日的升序获取所有用户余额行
  2. 删除所有已过期的行
  3. 迭代其他行
  4. 如果消费 - 行中的余额> 0然后删除该行并进行支出 =消费平衡排。
  5. 如果消费 - 行中的余额< = 0则更新行集余额=余额 - 支出
  6. 我期待什么 上述解决方案能否以更加巧妙的方式实施。

    提前致谢

0 个答案:

没有答案