Usa una función de ventana:
select role, name,
row_number() over (partition by role order by name) as rn
from the_table
order by name;
Usa una función de ventana:
select role, name,
row_number() over (partition by role order by name) as rn
from the_table
order by name;