Post został inspirowany nocnymi dyskusjami na temat sensowności korzystania z kredytów hipotecznych. W pierwszym podejściu miał być to pakiet, ale postanowiłem ułatwić sobie życie i napisałem zapytanie wyświetlające plan spłaty kredytu dla rat stałych i malejących.
Zapytanie można w łatwy sposób parametryzować (parametry mają kolor ciemnozielony) zmieniając:
Zapytanie można w łatwy sposób parametryzować (parametry mają kolor ciemnozielony) zmieniając:
- kwotę kredytu
- czas spłaty
- oprocentowanie w skali rocznej
- Oprocentowanie podczas spłaty kredytu jest stałe
- Raty są płatne z góry od bieżącego dnia co miesiąc
- Zakładamy, że oprocentowanie w obrębie każdego miesiąca jest jednakowe
DATA_RATY AS "Data raty",
ROUND (RATA_MAL_KAPITAL, 2) AS "Kapitał raty malejącej",
ROUND (RATA_MAL_ODSETKI, 2) AS "Kwota odsetek",
ROUND (RATA_MAL_KAPITAL + RATA_MAL_ODSETKI, 2) AS "Kwota raty malejącej",
ROUND (KWOTA_MAL_DO_SPLATY, 2) AS "Zadłużenie - raty malejące",
ROUND (RATA_STALA_KAPITAL, 2) AS "Kapitał raty stałej",
ROUND (RATA_STALA_ODSETKI, 2) AS "Odsetki raty stałej",
ROUND (RATA_STALA, 2) AS "Kwota raty stałej",
ROUND (KWOTA_STALA_DO_SPLATY, 2) AS "Zadłużenie - raty stałe"
FROM (SELECT 1 FROM DUAL)
MODEL
DIMENSION BY (0 d)
MEASURES (300000 KWOTA_KREDYTU, 6 OPROCENTOWANIE, 240 LICZBA_RAT,
TRUNC (SYSDATE) DATA_RATY,
0 KWOTA_MAL_DO_SPLATY,
0 RATA_MAL_KAPITAL,
0 RATA_MAL_ODSETKI,
0 RATA_STALA,
0 RATA_STALA_KAPITAL,
0 RATA_STALA_ODSETKI,
0 KWOTA_STALA_DO_SPLATY
)
RULES
ITERATE (10000) UNTIL (ITERATION_NUMBER = LICZBA_RAT[0] -1)
(
LICZBA_RAT [ITERATION_NUMBER] =
NVL (LICZBA_RAT[ITERATION_NUMBER - 1], LICZBA_RAT[0]),
OPROCENTOWANIE [ITERATION_NUMBER] =
NVL (OPROCENTOWANIE[ITERATION_NUMBER - 1], OPROCENTOWANIE[0]/1200),
RATA_MAL_KAPITAL [ITERATION_NUMBER] =
KWOTA_KREDYTU[0] / LICZBA_RAT[0],
DATA_RATY [ITERATION_NUMBER] =
ADD_MONTHS (DATA_RATY[0], ITERATION_NUMBER),
KWOTA_MAL_DO_SPLATY [ITERATION_NUMBER] =
NVL (KWOTA_MAL_DO_SPLATY[ITERATION_NUMBER - 1],
KWOTA_KREDYTU[0])
- NVL (RATA_MAL_KAPITAL[ITERATION_NUMBER - 1], 0),
RATA_MAL_ODSETKI [ITERATION_NUMBER] =
KWOTA_MAL_DO_SPLATY[ITERATION_NUMBER]
* OPROCENTOWANIE[ITERATION_NUMBER] ,
RATA_STALA_KAPITAL [ITERATION_NUMBER]
= KWOTA_KREDYTU[0] *OPROCENTOWANIE [ITERATION_NUMBER] *POWER( 1+OPROCENTOWANIE [ITERATION_NUMBER], ITERATION_NUMBER)/
( POWER( 1+OPROCENTOWANIE [ITERATION_NUMBER], LICZBA_RAT[ITERATION_NUMBER]) -1 ),
KWOTA_STALA_DO_SPLATY [ITERATION_NUMBER] =
NVL (KWOTA_STALA_DO_SPLATY[ITERATION_NUMBER - 1],
KWOTA_KREDYTU[0])
- NVL (RATA_STALA_KAPITAL[ITERATION_NUMBER - 1], 0),
RATA_STALA_ODSETKI [ITERATION_NUMBER] =
KWOTA_STALA_DO_SPLATY[ITERATION_NUMBER]
* OPROCENTOWANIE[ITERATION_NUMBER],
RATA_STALA[ITERATION_NUMBER] = RATA_STALA_KAPITAL[ITERATION_NUMBER] + RATA_STALA_ODSETKI[ITERATION_NUMBER]
)