U kunt deelnemen aan een afgeleide tabel die de totale waarde bevat voor elke groepering van b
select * from mytable t1
join (
select avg(a), b
from mytable
group by b
) t2 on t2.b = t1.b
of met behulp van een subquery
select *, (select avg(a) from mytable t2 where t2.b = t1.b)
from mytable t1
de vraag is getagd met zowel mysql als psql, dus ik weet niet zeker welke db je gebruikt. Maar op postgres kun je vensterfuncties gebruiken
select *, avg(a) over (partition by b)
from mytable