Ik denk dat je de waarden moet opsommen, en variabelen zijn de eenvoudigste manier. Dan geeft een extra join je de informatie die je nodig hebt om te bestellen op de meest voorkomende namen in de tabel:
select t.*
from (select t.*,
(@rn := if(@n = name, @rn + 1,
if(@rn := name, 1, 1)
)
) as rn
from t cross join
(select @n := '', @rn := 0
order by name
) t join
(select name, count(*) as cnt
from t
group by name
) tn
on t.name = tn.name
where rn <= 4
order by cnt desc, name;