我在弄清楚如何计算不同利率期间的初始金额的每日复利时遇到麻烦,无法得出包括每个利率期间的利息金额的新总计。面临的挑战是,对于每个后续利率期,您都必须计算金额的利息加上之前的利息!!!因此,这并不是一个简单的总计。
例如,使用以下费率表。
rate from date rate to date rate
-------------- ------------ ----
2013-07-15 2013-09-30 3
2013-10-01 2013-12-31 4
2014-01-01 2014-03-31 3
使用$ 32,550.37的初始金额,我必须遍历每个利率期并计算利息,最终的金额为$ 33,337.34。
rate from date rate to date rate daysx amount interest
-------------- ------------ ---- ----- ---------- --------
2013-07-15 2013-09-30 .03 78 32,550.37 209.34
2013-10-01 2013-12-31 .04 92 32,759.71 331.94
2014-01-01 2014-03-31 .03 90 33,091.65 245.69
Final Amount 33,337.34
例如,初始金额为$ 32,550.37,利息为$ 209.34,利率为3%。对于第二个利率期,我将该利息添加到金额中,即32,759.71美元,然后计算32,759.71美元的利息为4%。等
我正在使用不允许递归SQL的Netezza,所以我一直在尝试使用窗口函数,但还没有成功...
DROP TABLE TRATES;
CREATE TABLE TRATES (RATE_FROM_DATE DATE, RATE_TO_DATE DATE, RATE DECIMAL(10,2));
INSERT INTO TRATES VALUES ('2013-07-15','2013-09-30',.03);
INSERT INTO TRATES VALUES ('2013-10-01','2013-12-31',.04);
INSERT INTO TRATES VALUES ('2014-01-01','2014-03-31',.03);
SELECT TRATES.*
, DAYS_BETWEEN(RATE_FROM_DATE, RATE_TO_DATE)+1 AS DAYSX
, (AMOUNT * POW(1+(RATE)/365,(DAYS_BETWEEN(RATE_FROM_DATE, RATE_TO_DATE)+1)))) – AMOUNT
AS INTEREST
, FIRST_VALUE(AMOUNT) OVER(ORDER BY RATE_FROM_DATE)
*(POW(1+(RATE/100)/365,(DAYS_BETWEEN(RATE_FROM_DATE, RATE_TO_DATE)+1)))
AS NEW_AMOUNT
FROM TRATES
JOIN (SELECT 32550.37 AS AMOUNT) AS TPARMS ON 1=1
;
任何帮助将不胜感激。