私はPostgreSQLを使用しており、請求サイクルのテーブルと請求サイクルのテーブルを持っています。SQLを使用して金利を計算する
私は、各請求サイクルの最終支払日の後に残った金額に基づいて金利を計算する方法を理解しようとしています。問題は、返済が行われるたびに、それ以降に残った金額で利息を計算する必要があるということです。
このクエリの作成に関する私の考えは次のとおりです。請求サイクルの最終支払日から今日までのすべての日付のデータを作成します。パーティショニングを使用して、最初の日付の残量を取得します。 2番目の日付では、前の行の金額を使用して金利を追加し、この金利を計算します。
残念ながら私は思考に立ち往生しており、これをクエリにする方法を理解できません。
ここでは、理解しやすくするためのサンプルデータを示します。
請求サイクル:
id | ends_at
-----+---------------------
1 | 2017-11-30
2 | 2017-11-30
支払い:
amount | billing_cycle_id | type | created_at
-----------+------------------+---------+----------------------------
6000.0000 | 1 | payment | 2017-11-15 18:40:22.151713
2000.0000 | 1 |repayment| 2017-11-19 11:45:15.6167
2000.0000 | 1 |repayment| 2017-12-02 11:46:40.757897
だから私たちが見る場合、利用者は、19日に返済をしたので、興味のポストの日付(2017年11月30日)を終了未払い額、だから、30日から2日までは4000で毎日計算されますが、2日からは2000年にのみ利子を計算する必要があります。
利息計算(今日は2017年12月4日である):
date | amount | interest
------------+---------+----------
2017-12-01 | 4000 | 100 // First day of pending dues.
2017-12-02 | 2100 | 52.5 // Second day of pending dues.
2017-12-03 | 2152.5 | 53.8125 // Third day of pending dues.
2017-12-04 |2206.3125| // Fourth's day interest will be added tomorrow