my_table
показывает остаток на счете по кредитам каждого человека N месяцев a go. Из этой таблицы я хочу получить месячную сумму балансов каждого человека за последние 2 и 3 месяца и разделить каждую сумму на 2 и 3 соответственно (то есть, скользящую среднюю суммы баланса за последние 2 и 3 месяца). ).
Обратите внимание, что мне нужна сумма баланса за прошедшие М месяцев, деленная на М месяцев.
PERSON_ID CRED_ID MONTHS_BEFORE BALANCE
01 01 1 1100
01 01 2 1500
01 01 3 2000
01 02 1 50
01 02 2 400
01 02 3 850
02 06 1 300
02 06 2 320
02 11 1 7500
02 11 2 10000
Один способ сделать это:
select
person_id, sum(balance) / 2 as ma_2
from
my_table
where
months_before <= 2
group by
person_id
и объединить этот результат с
select
person_id, sum(balance) / 3 as ma_3
from
my_table
where
months_before <= 3
group by
person_id
Я хочу знать, можно ли это обработать с помощью case
или условной суммы или что-то вроде этого:
select
person_id,
sum(balance) over (partition by person_id when months_before <= 2) / 2 as ma_2,
sum(balance) over (partition by person_id when months_before <= 3) / 3 as ma_3
from
my_table
Желаемый результат будет выглядеть следующим образом:
PERSON_ID MA_2 MA_3
01 1525.00 1966.66
02 9060.00 9060.00