Uma abordagem é a diferença de números de linha:
select name, count(*)
from (select t.*,
(row_number() over (order by id) -
row_number() over (partition by name order by id)
) as grp
from t
) t
group by grp, name;
A lógica é mais fácil de entender se você executar a subconsulta e observar os valores de cada número de linha separadamente e, em seguida, observar a diferença.