Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Погашение кредита на примере sqlite / 8 сообщений из 8, страница 1 из 1
04.04.2007, 17:28
    #34438307
Железяка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Погашение кредита на примере sqlite
Есть таблицы
Код: 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
05.04.2007, 07:43
    #34439101
Серж
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Погашение кредита на примере sqlite
так и не понял... что получить то надо?
...
Рейтинг: 0 / 0
05.04.2007, 08:41
    #34439147
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Погашение кредита на примере sqlite
2 Автор:
Всё что тебе нужно - это реализовать накопительную сумму выплат.
В общем случае накопительный итог реализовывается при помощи коррелированного подзапроса во фразе SELECT
...
Рейтинг: 0 / 0
05.04.2007, 09:57
    #34439362
Железяка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Погашение кредита на примере sqlite
Накопительную систему выплат. Если на примере, то человек с каждым месяцем выплачивает фиксированную часть долга + уменьшающийся % на суммму оставшегося непогашенного долга
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
05.04.2007, 10:59
    #34439615
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Погашение кредита на примере sqlite
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
05.04.2007, 11:30
    #34439772
Железяка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Погашение кредита на примере sqlite
Большое спасибо, то что надо :) Учить и учить sql, а вот где учить кроме Мартина Грабера "Понимание SQL" (Understanding SQL)?
...
Рейтинг: 0 / 0
05.04.2007, 12:34
    #34440063
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Погашение кредита на примере sqlite
ЖелезякаУчить и учить sql, а вот где учить кроме Мартина Грабера "Понимание SQL" (Understanding SQL)?Ходи на посещаемые ветки форума (MS SQL, Oracle). Там регулярно задаются вопросы-задачи на SQL. Смотри предлагаемые решения, бери для себя нужное, перекладывай на синтаксис своей СУБД. Лично я так и познавал азы SQL...

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

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


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