Esta es una versión un poco más sexy de algunas de las otras respuestas:tenga en cuenta el uso de sum(100)
para evitar el count(*) * 100
más largo (y más mundano) :)
select name, count(*) as count, sum(100) / total as percentage
from namelist
cross join (select count(*) as total from namelist) x
group by 1