|
Как сделать расчет показателя для каждого клиента на дату заключения клиентом договора?
|
|||
---|---|---|---|
#18+
Добрый вечер. Для каждого клиента (их более тысячи) необходимо рассчитать показатель (средняя сумма транзакции за день) на дату, совпадающую с датой заключения договора (даты заключения договоров у клиентов почти везде разные). Ранее расчет производился только на одну дату, общую для всех клиентов: 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.11.2021, 20:24 |
|
Как сделать расчет показателя для каждого клиента на дату заключения клиентом договора?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2021, 21:05 |
|
Как сделать расчет показателя для каждого клиента на дату заключения клиентом договора?
|
|||
---|---|---|---|
#18+
skyrider, join + group by по клиенто-дню ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2021, 03:30 |
|
Как сделать расчет показателя для каждого клиента на дату заключения клиентом договора?
|
|||
---|---|---|---|
#18+
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.11.2021, 10:20 |
|
|
start [/forum/topic.php?fid=52&tid=1879727]: |
0ms |
get settings: |
17ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
49ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
127ms |
get tp. blocked users: |
0ms |
others: | 370ms |
total: | 574ms |
0 / 0 |