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!