Não entendi porque a solução proposta dispõe ... COUNT(*) e não COUNT (cargo).
 
  
Não entendi porque a solução proposta dispõe ... COUNT(*) e não COUNT (cargo).
 
  
Boa noite Anderson! Tudo bem com você?
Ótima pergunta. A diferença é sutil, mas, importante.  A função COUNT(*) conta todas as linhas da tabela, independentemente de qualquer coluna específica. Já COUNT(cargo) conta apenas as linhas onde a coluna cargo não é nula. 
Fiz um exemplo simples para que você consiga ver na prática a diferença do resultado:
CREATE TABLE exemplo_funcionarios (
    id INT PRIMARY KEY,
    nome VARCHAR(50),
    cargo VARCHAR(50)
);
INSERT INTO exemplo_funcionarios (id, nome, cargo) VALUES
  (1, 'Ana', 'Gerente'),
  (2, 'Carlos', 'Analista'),
  (3, 'João', NULL),
  (4, 'Maria', 'Desenvolvedor'),
  (5, 'Pedro', NULL);
Se usarmos SELECT COUNT(*)  o resultado será 5, já SELECT COUNT(cargo), o resultado será 3, pois, não considerará os nulos.
Talvez você se pergunte: qual devo usar? qual é o melhor?
Não há um "melhor" universal. A melhor opção depende do seu objetivo específico na consulta. Se precisamos do total de registros, usamos COUNT(*). Se precisamos contar apenas as linhas onde um determinado campo não é nulo, utilizamos COUNT(campo).
Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!