To jest nieco bardziej seksowna wersja niektórych innych odpowiedzi — zwróć uwagę na użycie sum(100) aby uniknąć dłuższego (i bardziej przyziemnego) 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