Ola Mateus,
Sim sempre é possivel criar um função, ainda mais simples dessa forma.
Para iniciar pense em dois pontos:
- como vou ordernar o campos que desejo, so seu caso a ordenação é "pelo maior numero de aparições"
- Agora voce precisa agrupar "Nome cargo" e contar o campo .
Busque na documentação da linguagem que voce esta utilizando, como Agrupa por um campo, como conta, e como ordena.
Ex: SELECT NOME_CARGO, COUNT(*) AS QUANTIDADE FROM TABELA_CARGOS GROUP BY NOME_CARGOS ORDER BY 2 DESC
Note que estamos agupando pelo nome e ordenando pelo 2 campo que é a quantidade, DESC .
Enviei o codigo no padrão TSQL cerifique se são as mesmas funções par a linguagem que esta utilizando.
Lembre-se que o nome dos cargos precisam estar padronizados para que seja mais efetivo.
Me conte se deu certo.
Bons estudos.