我认为计算是:
select t.*, premium / (12 / yearly_payment_freq)) as monthly_premium_calculatedfrom mytable t;
编辑:
我知道,您还需要在中间几个月内进行这种分配。因此,您可以通过计算非零付款的数量来分配组。然后:
select t.*, ( max(premium) over (partition by policy_id, grp) / (12 / yearly_payment_freq) ) as monthly_premium_calculatedfrom (select t.*, sum(case when premium > 0 then 1 else 0 end) over (partition by policy_id order by payment_date) as grp from mytable t ) t;
这是一个db
<> fiddle(它使用Postgres,因为它比Oracle更容易设置)。



