powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите решить интересную задачку
3 сообщений из 3, страница 1 из 1
Помогите решить интересную задачку
    #40084466
GodExecutive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые спецы.
Большая просьба помочь с одной интересной задачкой.

Необходимо получить список кредитов, которые на момент расчета имеют непогашенную задолженность, и рассчитать для каждого такого кредита:
1. Общую (накопленную) сумму просроченного долга непогашенную (не выплаченную) к моменту расчета.
2. Дату начала текущей (последней) просрочки. Под датой начала просрочки, в данной задаче понимается первая дата непрерывного периода, в котором общая сумма просроченного непогашенного долга > 0.Учесть, что периодов просрочек может быть несколько.
3. Кол-во дней текущей просрочки.

Таблица:
Date Customer Deal Cur Sum
12.12.2009 111110 111111 RUR 12000
25.12.2009 111110 111111 RUR 5000
12.12.2009 111110 122222 RUR 10000
12.01.2010 111110 111111 RUR -10100

Плюс - это появление просрочки. Минус - гашение кредита.
У меня засада с получением дат.

1. Создал таблицу:

drop table if exists PDCL
CREATE TABLE PDCL
("DATA" DATETIME,
"CUSTOMER" VARCHAR(8),
"DEAL" VARCHAR(8),
"CURRENCY" VARCHAR(4),
"SUM" INT
);

INSERT INTO PDCL VALUES ('12.12.2009','111110','111111','RUR',12000);
INSERT INTO PDCL VALUES ('25.12.2009','111110','111111','RUR',5000);
INSERT INTO PDCL VALUES ('12.12.2009','111110','122222','RUR',10000);
INSERT INTO PDCL VALUES ('12.01.2010','111110','111111','RUR',-10100);
INSERT INTO PDCL VALUES ('20.11.2009','220000','222221','RUR',25000);
INSERT INTO PDCL VALUES ('20.12.2009','220000','222221','RUR',20000);
INSERT INTO PDCL VALUES ('31.12.2009','220001','222221','RUR',-10000);
INSERT INTO PDCL VALUES ('29.12.2009','111110','122222','RUR',-10000);
INSERT INTO PDCL VALUES ('27.11.2009','220001','222221','RUR',-30000);
INSERT INTO PDCL VALUES ('30.12.2010','220001','122222','RUR',5000);
INSERT INTO PDCL VALUES ('30.12.2011','220001','122222','RUR',-5000);
INSERT INTO PDCL VALUES ('30.12.2012','220001','122222','RUR',3000);
INSERT INTO PDCL VALUES ('30.12.2013','220001','122222','RUR',3000);

2. Создал вспомогательную табличку:

CREATE VIEW qwerty as
SELECT P.DATA,
P.DEAL,
P.SUM,
COALESCE(SUM(P.SUM)
OVER(PARTITION BY P.DEAL ORDER BY P.DATA ROWS BETWEEN UNBOUNDED
PRECEDING AND CURRENT ROW),
0) AS TOTAL_AMOUNT,
RANK() OVER(PARTITION BY P.DEAL ORDER BY P.DATA DESC) AS R
FROM PDCL P
WHERE P.DATA <= GETDATE();

3. И создал процедуру.

SELECT P.DEAL,
P.TOTAL_AMOUNT, -- 1. Общая (накопленная) сумма просрочки
q.DELAY_START_DATE, -- 2. Дата начала текущей (последней) просрочки
DATEDIFF(day, q.DELAY_START_DATE, GETDATE()) AS Number_days_delay -- 3. Кол-во дней текущей просрочки
FROM qwerty as P left join
(select data as DELAY_START_DATE, qwerty.deal from
(SELECT min(r)-1 as r, deal as deal from qwerty
where TOTAL_AMOUNT <= 0
group by deal) as asdf left JOIN qwerty
on qwerty.r = asdf.r and qwerty.deal = asdf.deal) as q on p.deal =q.deal
WHERE P.R = 1 AND P.TOTAL_AMOUNT > 0;

Засада в том, что данная процедура вытаскивает только те кредиты, по которым человек или уже гасил один раз кредит или вносил больше средств, чем задолженность.
Но вот как оставить эту логику, но ещё и добавить те кредиты, по которым задолженность возникла и ни разу не гасилась в ноль, не понимаю
...
Рейтинг: 0 / 0
Помогите решить интересную задачку
    #40084470
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего в ней интересного?
Тестовое задание я айти-макаки.
...
Рейтинг: 0 / 0
Помогите решить интересную задачку
    #40084477
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GodExecutive,

авторкредиты, по которым задолженность возникла и ни разу не гасилась в ноль
подсчитайте нарастающий итог по балансу каждого кредита, выберите те кредиты, у которых нет ни одной отрицательной записи среди строк итога.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите решить интересную задачку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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