select count(*), count(1) e count(nome): a batalha dos counts de SQL

select count(*), count(1) e count(nome): a batalha dos counts de SQL
Guilherme Silveira
Guilherme Silveira

Compartilhe

Imagem de destaque

Quando vamos usar count no banco de dados nos deparamos com várias opções do SQL, conheça as diferenças entre as várias possibilidades de contar linhas de tabela com count em um banco de dados.

Como um exemplo, quantos produtos tem minha empresa mesmo?


select count(nome) from Produtos; 
> 198

Mas...


select count(id) from Produtos; 
> 200

Como assim? SQL pirou? De novo?


select id, nome from Produtos where nome is null; 
> 190, null 
> 196, null

O select count verifica o número de linhas não nulas dentro do count que você quer fazer! Se tinha nome nulo, não contou! Resultado? Zoou.

Muito cuidado com seus counts. Então o que devo contar? Se você quer contar valores não nulos, use o count(campo), como fizemos:


select count(nome) from Produtos; 
> 198

Mas se quer contar todos, count estrela nele pra não correr risco, ele vai contar o número de registros retornados, independentemente de valores nulos:


select count(\*) from Produtos; 
> 200

E o 1? Pra que o count(1)?


select count(1) from Produtos; 
> 200

O count(1) seria uma alternativa ao count(algum_campo) pois você teria certeza que nunca seria nulo, e que não precisaria ler o campo... acontece que fica bizarro select count(1), e você quer ter código bizarro ou código legível?

Como disse, eu prefiro contar estrelas... e você, conta estrelas conta um ou conta id?

Fica agora o desafio: qual o resultado da SQL a seguir?


select count(nome) from Produtos where nome is null; 
> ??????

Gostou dessas práticas e dicas de SQL? Então confira também os cursos que temos na Alura para a SQL e banco de dados! Outro assunto legal para estudar é sobre o que são como usar trigger em SQL. Até o próximo artigo ;)

Guilherme Silveira
Guilherme Silveira

Co-fundador da Alura, da Caelum e do GUJ. Com 18 anos de ensino nas áreas de programação e dados, criou mais de 100 cursos. Possui formação em engenharia de software, viés matemático e criativo, além de ser medalhista de ouro em competições nacionais de computação, tendo representado o Brasil nos mundiais. Participante de comunidades open source e de educação em tecnologia, tendo escrito 7 livros. Faz mágica e fala coreano no tempo livre.

Veja outros artigos sobre Data Science