select af_id, sum(coalesce(amount_value,0))*0.1 sum_pair_10
from (
select
arur.af_id,
arur.r_w_uid,
lag(arur.r_w_uid,1,-1) over (partition by arur.af_id order by arur.r_w_uid) r_w_uid_1
,row_number() OVER (partition by arur.af_id order by arur.r_w_uid ) mod 2 pair_flag
from arur, u_af
where u_af.id = arur.af_id ) t1 left join orders o on (o.uid in (t1.r_w_uid,t1.r_w_uid_1) and o.status = 'Completed')
where pair_flag = 0
group by af_id
having count(distinct r_w_uid) > 5
select af_id, sum(amount_value)*0.1 sum_pair_10
from (
select
arur.af_id,
arur.r_w_uid,
lag(arur.r_w_uid,1,-1) over (partition by arur.af_id order by arur.r_w_uid) r_w_uid_1
,row_number() OVER (partition by arur.af_id order by arur.r_w_uid ) mod 2 pair_flag
from arur, u_af
where u_af.id = arur.af_id ) t1 left join orders o on (o.uid in (t1.r_w_uid,t1.r_w_uid_1) and o.status = 'Completed')
where pair_flag = 0
group by af_id
having count(pair_flag) > 5
UPD2:
Связи таблиц:
orders.uid = u_af.uid
u_af.id = arur.af_id
select af_id, sum(Sum_pair)*0.1 sum_pair_10
from (
select
arur.af_id,
o.amount_value + lag(o.amount_value,1,0) over (partition by arur.af_id order by o.id) Sum_pair,
row_number() OVER (partition by arur.af_id order by o.id) mod 2 pair_flag
from arur, u_af left join orders o on (o.uid = u_af.uid and o.status = 'Completed')
where u_af.id = arur.af_id) t1
where pair_flag = 0
group by af_id
Пары формируются следующим образом:
Если посмотреть в таблицу arur, то можно увидеть что для, например, af_id = 52 есть несколько записей в столбце r_w_uid. Если взять все записи r_w_uid относящиеся af_id = 52 и поделить их на 2, то получим количество пар. Остаток не включается в пары.