Мисля, че трябва да изброите стойностите, а променливите са най-простият начин. След това допълнително присъединяване ви дава информацията, от която се нуждаете, за да подредите по най-често срещаните имена в таблицата:
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;