|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.09.2023, 01:40 | #1 |
Новичок
Джуниор
Регистрация: 03.09.2023
Сообщений: 1
|
SQL подсчёт остатка и прибыли в каждый день месяца
Есть очень плохо спроектированная БД Для системы, позволяющей выдавать займы, учитывать суммы выдач и выплат и т.д.
Что есть займ (loan). Некоторая сумма денег(основной долг, ОД, MD), которую клиент берет в долг у организации под определенный процент (INT), и постепенно выплачивает суммы, указанные в заранее сформированном графике платежей. Часть платежа уходит на погашение ОД, часть на погашение начисленных процентов. Если человек не заплатил/заплатил не полностью сумму по графику, то начисляется пеня (PEN), еще может начисляться комиссия (COM). Каждая подобная операция вносится в таблицу Operations. При этом, разрабатывая эту систему, как то забыли добавить сущность счета и балансов, что сильно облегчило бы жизнь) Поэтому баланс на каждом абстрактном “типе счета” приходится считать, как сумма всех операций. Задача: Написать запрос, который для каждого дня без пропусков*, начиная с минимального значения Operations.created_at, и заканчивая текущим днем, посчитает портфель (только текущий остаток по ОД), а также общую прибыль (сумма дохода от остальных типов операций) портфель = весь outcome по счету ОД - income по счету ОД прибыль = income остальных типов операций DDL: create table Operations ( id number, loan_id number, is_income_flg char(1), -- 1/0 type varchar(3), -- MD/INT/PEN/COM created_at date, amount number(15, 2) ); Пример: 1. 2 клиента взяли кредиты по 1000 $. 2. По графику платеж спустя 2 дня, 1 клиент внес - 100 $ (70 - ОД, 30 - проценты) 3. Результат Дата Портфель Прибыль 2023-01-01 2000 0 2023-01-02 2000 0 2023-01-03 1930 30 Код:
Дата Портфель Прибыль 2023-07-01 1000.0 0 2023-07-02 1000.0 0 2023-07-03 930 102 2023-07-04 930 102 2023-07-05 930 102 2023-07-06 930 102 2023-07-07 1430 102 2023-07-08 1430 102 2023-07-09 1430 102 2023-07-10 1030 102 2023-07-11 1030 102 2023-07-12 1030 202 2023-07-13 1330 232 Код:
Последний раз редактировалось xakon_by; 03.09.2023 в 01:45. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[РЕШЕНО] Джон взял кредит в банке на сумму А под Р% в день. Каждый седьмой день он будет возвращать некоторую сумму В. Сможет ли Джон рассчитаться с банком | kim-im | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 20.12.2018 13:19 |
есть 200 тонн цемента, в первый день я трачу 5 тонн, дальше каждый день на 20% больше. Как при помощи цикла while заставить программу показать, через сколько дней цемент кончится? | LaSTiqq | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 21.04.2017 17:47 |
С++ Лыжник, начав тренировки, в первый день пробежал n км. Каждый следующий день он увеличивал пробег на m% от пробега предыдущего дня. Сколько километров он пробежит за k дней. | marina46 | Помощь студентам | 9 | 23.11.2016 18:27 |
Последний день месяца | kzld | Microsoft Office Excel | 5 | 28.02.2013 12:14 |
определить день недели по заданному числу (считать в месяце 30 дней и первый день месяца понедельник | dan1991 | Помощь студентам | 1 | 01.03.2009 20:59 |