원리금균등상환 계산기를 구현해 본다.
-- s : 대출금액 (원단위, 여기서는 1억원)
-- r : 대출금리 (%, 여기서는 5%)
-- t : 대출기간 (년, 여기서는 1년)
-- 아래에서 rep1 컬럼은 1회차 상환원금을 말한다.
with fe as (
select 100000000 s, 0.05 r, 1 t from dual)
SELECT ORD 회차
, S * R / 12 + REP1 상환원리금
, REP1 * POWER (1 + R / 12, ORD - 1) 상환원금
, S * R / 12 + REP1 - REP1 * POWER (1 + R / 12, ORD - 1) 월이자금액
, S - REP1 * (POWER (1 + R / 12, ORD) - 1) / (R / 12) 잔액
FROM (SELECT S, R, LEVEL ORD,
S * R / 12 / (POWER (1 + R / 12, 12 * T) - 1) REP1
FROM FE
CONNECT BY LEVEL <= 12 * T)
회차 상환원리금 상환원금 월이자금액 잔액
---------- ---------- ---------- ---------- ----------
1 8560748.18 8144081.51 416666.667 91855918.5
2 8560748.18 8178015.19 382732.994 83677903.3
3 8560748.18 8212090.25 348657.930 75465813.1
4 8560748.18 8246307.29 314440.888 67219505.8
5 8560748.18 8280666.90 280081.274 58938838.9
6 8560748.18 8315169.68 245578.495 50623669.2
7 8560748.18 8349816.22 210931.955 42273853.0
8 8560748.18 8384607.12 176141.054 33889245.8
9 8560748.18 8419542.99 141205.191 25469702.8
10 8560748.18 8454624.42 106123.762 17015078.4
11 8560748.18 8489852.02 70896.1601 8525226.40
12 8560748.18 8525226.40 35521.7767 0
참고로 아래에 '원금균등상환' 계산기도 구현해 본다.
원금균등상환은 원리금균등상환보다 간단한 로직이다.
-- s, r, t는 위와 같은 의미이다.
-- 아래에서 NP 컬럼은 회차마다 균등한 상환원금을 말한다.
-- 마지막 회차 잔액에 0에 가깝지만 0이 아닌 수(4.E-32)가 나옴에 유의한다.
with fe as (
select 100000000 s, 0.05 r, 1 t from dual)
SELECT ORD 회차
, (S - NP * (ORD - 1)) * R / 12 + NP 상환원리금
, NP 상환원금
, (S - NP * (ORD - 1)) * R / 12 월이자금액
, S - NP * ORD 잔액
FROM (SELECT S, R, LEVEL ORD,
S / 12 / T NP
FROM FE
CONNECT BY LEVEL <= 12 * T)
회차 상환원리금 상환원금 월이자금액 잔액
---------- ---------- ---------- ---------- ----------
1 8750000 8333333.33 416666.667 91666666.7
2 8715277.78 8333333.33 381944.444 83333333.3
3 8680555.56 8333333.33 347222.222 75000000.0
4 8645833.33 8333333.33 312500 66666666.7
5 8611111.11 8333333.33 277777.778 58333333.3
6 8576388.89 8333333.33 243055.556 50000000.0
7 8541666.67 8333333.33 208333.333 41666666.7
8 8506944.44 8333333.33 173611.111 33333333.3
9 8472222.22 8333333.33 138888.889 25000000.0
10 8437500 8333333.33 104166.667 16666666.7
11 8402777.78 8333333.33 69444.4444 8333333.33
12 8368055.56 8333333.33 34722.2222 4.E-32