select t.name, decode(t.name, 'a', t.cost * (t1.sum_a1 / con_a1), 'b', t.cost * t1.min_a1) as cost from table_a t, (select a1.name, sum(a1.rate) as sum_a1, count(*) as con_a1, min(a1.rate) as min_a1 from table a1 group by a1.name) t1 where t.name = t1.name order by t.name
decode(t.name,
'a',
t.cost * (t1.sum_a1 / con_a1),
'b',
t.cost * t1.min_a1) as cost
from table_a t,
(select a1.name,
sum(a1.rate) as sum_a1,
count(*) as con_a1,
min(a1.rate) as min_a1
from table a1
group by a1.name) t1
where t.name = t1.name
order by t.name