Esta é uma versão um pouco mais sexy de algumas das outras respostas - observe o uso de
sum(100)
para evitar o mais longo (e mais mundano) count(*) * 100
:) select name, count(*) as count, sum(100) / total as percentage
from namelist
cross join (select count(*) as total from namelist) x
group by 1