powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Погашение кредита на примере sqlite
8 сообщений из 8, страница 1 из 1
Погашение кредита на примере sqlite
    #34438307
Железяка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблицы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
CREATE TABLE ndogs (
id integer, -- id клиента прописан в главной таблице
ndog text, -- номер договора
dateb date, -- дата начала договора
datee date, -- дата окончания
money integer, -- сумма договора
zaem integer, -- признак займ(1) это или вклад(0)
dpay INTEGER, -- день платежа(не дата)
prc FLOAT, -- % договора в месяц
typedog INTEGER -- тип договора (0)-простой без накопления погашения где проценты считаются
-- от суммы договора, (1) - "продвинутый" где процент насчитывается на оставшуюся сумму 
-- непогашенного долга
);
Таблица платежей
CREATE TABLE pays (
id integer, 
ndog text, 
dpay date, -- день ожидаемого платежа
hpay integer, -- погашение основного долга
pen integer, -- размер пени при несвоевременном погашении долга, вводится в ручную или 
-- расчитывается автоматически при oplata=0
oplata integer -- погашена данная сума или нет
);
INSERT INTO ndogs VALUES( 2 ,'88','2007-01-05','2007-12-31', 5000000 , 1 , 1 , 3 . 0 , 1 );
INSERT INTO pays VALUES( 2 ,'88','2007-02-01', 454545 , 0 , 1 );
INSERT INTO pays VALUES( 2 ,'88','2007-03-01', 454545 , 0 , 1 );
INSERT INTO pays VALUES( 2 ,'88','2007-04-01', 454545 , 0 , 1 );
INSERT INTO pays VALUES( 2 ,'88','2007-05-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-06-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-07-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-08-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-09-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-10-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-11-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-12-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-02-01', 454545 , 0 , 1 );
INSERT INTO pays VALUES( 2 ,'88','2007-03-01', 454545 , 0 , 1 );
INSERT INTO pays VALUES( 2 ,'88','2007-04-01', 454545 , 0 , 1 );
INSERT INTO pays VALUES( 2 ,'88','2007-05-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-06-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-07-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-08-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-09-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-10-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-11-01', 454545 , 0 , 0 );
INSERT INTO pays VALUES( 2 ,'88','2007-12-01', 454545 , 0 , 0 );
Есть набор запросов который выводит таблицу погашений при постоянной сумме процентов
Помогите составить запрос(ы),views при уменьшающейся сумме процентов.
Т.е. каждый месяц клиент платит ЧастьДолгаПоСуммеДоговора+(СуммаДоговора*3%)=ФиксированнаяСуммаПлатежа
А надо ЧастьДолгаПоСуммеДоговора+((СуммаДоговора-ВыплаченныйДолг)*3%)=УменьшающаясяСуммаПлатежа
за период
т.е. понятно что можно примерно так select pays.hpay+((ndogs.money-sum(hpay))/100*3) from
-- ndogs,pays where pays.id=2 and pays.ndog='88';
Но это будет одна запись, а количество записей в pays
...
Рейтинг: 0 / 0
Погашение кредита на примере sqlite
    #34439101
Серж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так и не понял... что получить то надо?
...
Рейтинг: 0 / 0
Погашение кредита на примере sqlite
    #34439147
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Автор:
Всё что тебе нужно - это реализовать накопительную сумму выплат.
В общем случае накопительный итог реализовывается при помощи коррелированного подзапроса во фразе SELECT
...
Рейтинг: 0 / 0
Погашение кредита на примере sqlite
    #34439362
Железяка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Накопительную систему выплат. Если на примере, то человек с каждым месяцем выплачивает фиксированную часть долга + уменьшающийся % на суммму оставшегося непогашенного долга
1000 - займ, срок погашения 10 месяцев
100+30
100+(1000-100)*3%
100+(1000-200)*3%
100+(1000-300)*3%
100+(1000-400)*3%
100+(1000-500)*3%
100+(1000-600)*3%
100+(1000-700)*3%
100+(1000-800)*3%
100+(1000-900)*3%
Боюсь спросить, а что такое коррелированый запрос? Хоть пример, я с select'ом на уровне связей where и объединений union(недавно узнал про minus, intersect). В программировании и excel я знаю как это сделать, а вот select...
...
Рейтинг: 0 / 0
Погашение кредита на примере sqlite
    #34439615
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Автор.
Давай я тебе покажу небольшой пример, а ты его сам прикрутишь к своей задаче...
Пусть у нас есть таблица TEST_TABLE с информацией о платежах. На сколько месяцев был взят кредит, столько строк в этой таблице и будет для данного кредитора.
И пусть в этой таблице есть такая информация:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select * from test_table

Query finished, retrieving results...

RN   PAY_SUM
--   -------
  1         100 
  2         100 
  3         100 
  4         100 
  5         100 
  6         100 
  7         100 
  8         100 
  9         100 
 10         100 

 10  row(s) retrieved
Где RN - это порядковый номер платежа (в качестве этого поля может выступать и дата платежа). PAY_SUM - это фиксированная сумма платежа.

Вот тебе запрос, который позволяет вычислить скользящий итог:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
select rn, pay_sum, 
       (
         select sum(pay_sum)
           from test_table t1
          where t1.rn < t0.rn
       ) slide_sum, -- Накопительная сумма уже внесенных платежей (фиксированная часть)
       pay_sum +
       coalesce(( 1000  -(select sum(pay_sum)
                          from test_table t1
                         where t1.rn < t0.rn
               )) *  0 . 03 ,  30 ) slide_summ_with_pct -- Сумма платежа с учетом уменьшающегося остатка
  from test_table t0

Query finished, retrieving results...

RN   PAY_SUM   SLIDE_SUM   SLIDE_SUMM_WITH_PCT
--   -------   ---------   -------------------
  1         100                                 130 
  2         100           100                     127 
  3         100           200                     124 
  4         100           300                     121 
  5         100           400                     118 
  6         100           500                     115 
  7         100           600                     112 
  8         100           700                     109 
  9         100           800                     106 
 10         100           900                     103 

 10  row(s) retrieved
...
Рейтинг: 0 / 0
Погашение кредита на примере sqlite
    #34439772
Железяка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, то что надо :) Учить и учить sql, а вот где учить кроме Мартина Грабера "Понимание SQL" (Understanding SQL)?
...
Рейтинг: 0 / 0
Погашение кредита на примере sqlite
    #34440063
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖелезякаУчить и учить sql, а вот где учить кроме Мартина Грабера "Понимание SQL" (Understanding SQL)?Ходи на посещаемые ветки форума (MS SQL, Oracle). Там регулярно задаются вопросы-задачи на SQL. Смотри предлагаемые решения, бери для себя нужное, перекладывай на синтаксис своей СУБД. Лично я так и познавал азы SQL...

З.Ы.
И не бойся обращаться за помощью на форум, если сам чего-то не допонимаешь или не знаешь как решить задачу.
Ведь "спросить - стыд пяти минут, не знать - стыд всей жизни!"(с)
...
Рейтинг: 0 / 0
Погашение кредита на примере sqlite
    #34488267
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЖелезякаБольшое спасибо, то что надо :) Учить и учить sql, а вот где учить кроме Мартина Грабера "Понимание SQL" (Understanding SQL)?

Вот почитайте еще и эти книга:
Newman C. SQLite 2004 (1.4Mb, формат CHM, язык - английский)
Michael Owens. The Definitive Guide to SQLite (5.8Мb, формат PDF, язык - английский)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Погашение кредита на примере sqlite
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]