Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как сделать расчет показателя для каждого клиента на дату заключения клиентом договора?  [new]
skyrider
Member

Откуда:
Сообщений: 3
Добрый вечер. Для каждого клиента (их более тысячи) необходимо рассчитать показатель (средняя сумма транзакции за день) на дату, совпадающую с датой заключения договора (даты заключения договоров у клиентов почти везде разные). Ранее расчет производился только на одну дату, общую для всех клиентов:

SELECT client_id,AVG (transaction_amount) as AVG_AMOUNT,calculation_date
FROM customers c
WHERE c.calculation_date=to_date('01.11.2021','dd.mm.yyyy');


Теперь необходимо преобразовать вышеуказанный код для расчета средней суммы транзакции за день для каждого клиента на дату заключения ими договоров. Можно ли вообще рассчитать показатель ( в данном случае -AVG (transaction_amount) ) на разные даты для каждого клиента в одном селекте? В таблице транзакций всего 2 столбца: client_id и дата заключения договора. Пока набросал такой вариант, но не уверен, что при таком селекте будет выбираться нужная дата заключения договора под каждого клиента и сделает одновременно расчет средней суммы транзакции для всех клиентов:

SELECT client_id,AVG (transaction_amount) as AVG_AMOUNT,calculation_date
FROM (select * from customers c WHERE c.calculation_date=to_date('01.11.2021','dd.mm.yyyy')) t1
JOIN transactions tr on t1.client_id=tr.client_id;

За дельный совет буду благодарен.
25 ноя 21, 20:24    [22400927]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать расчет показателя для каждого клиента на дату заключения клиентом договора?  [new]
skyrider
Member

Откуда:
Сообщений: 3


К сообщению приложен файл. Размер - 32Kb
25 ноя 21, 21:05    [22400943]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать расчет показателя для каждого клиента на дату заключения клиентом договора?  [new]
oragraf
Member

Откуда: Moscow
Сообщений: 1385
skyrider,

join + group by по клиенто-дню
26 ноя 21, 03:30    [22401033]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать расчет показателя для каждого клиента на дату заключения клиентом договора?  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 3279
skyrider
Добрый вечер. Для каждого клиента (их более тысячи) необходимо рассчитать показатель (средняя сумма транзакции за день) на дату, совпадающую с датой заключения договора (даты заключения договоров у клиентов почти везде разные). Ранее расчет производился только на одну дату, общую для всех клиентов:

SELECT client_id,AVG (transaction_amount) as AVG_AMOUNT,calculation_date
FROM customers c
WHERE c.calculation_date=to_date('01.11.2021','dd.mm.yyyy');


Теперь необходимо преобразовать вышеуказанный код для расчета средней суммы транзакции за день для каждого клиента на дату заключения ими договоров. Можно ли вообще рассчитать показатель ( в данном случае -AVG (transaction_amount) ) на разные даты для каждого клиента в одном селекте? В таблице транзакций всего 2 столбца: client_id и дата заключения договора. Пока набросал такой вариант, но не уверен, что при таком селекте будет выбираться нужная дата заключения договора под каждого клиента и сделает одновременно расчет средней суммы транзакции для всех клиентов:

SELECT client_id,AVG (transaction_amount) as AVG_AMOUNT,calculation_date
FROM (select * from customers c WHERE c.calculation_date=to_date('01.11.2021','dd.mm.yyyy')) t1
JOIN transactions tr on t1.client_id=tr.client_id;

За дельный совет буду благодарен.


влоб (в contracts client_id уникально)

SELECT client_id,AVG (transaction_amount) as AVG_AMOUNT,calculation_date
FROM customers c
WHERE c.calculation_date=(select date_contract from contracts co where co.client_id=c.client_id)
group by client_id

ps
SELECT client_id,co.date_contract,AVG (transaction_amount) as AVG_AMOUNT,calculation_date
FROM customers c, contracts co
WHERE c.calculation_date=co.date_contract
group by client_id,co.date_contract


......
stax
26 ноя 21, 10:20    [22401106]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать расчет показателя для каждого клиента на дату заключения клиентом договора?  [new]
skyrider
Member

Откуда:
Сообщений: 3
Stax,

Огромнейшая благодарность! Попробую так сделать и потом выборочно проверю результаты по нескольким клиентам.
26 ноя 21, 12:02    [22401172]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить