1
resposta

Dúvida na utilização do * na query

Eu fiz a query da seguinte forma:

SELECT CPF, COUNT(NUMERO) from notas_fiscais WHERE DATA_VENDA > '2016-01-01' GROUP BY CPF HAVING COUNT(NUMERO) > 2000;

E a sugestão da resposta está usando * como paramento para o COUNT. Alguém poderia ajudar a exemplificar a diferença da forma que eu usei e da forma abaixo, mesmo sabendo que ambas as formas retornam o mesmo conteúdo para o exercício em questão?! Muito obrigado.

SELECT CPF, COUNT(*) from notas_fiscais WHERE DATA_VENDA > '2016-01-01' GROUP BY CPF HAVING COUNT(*) > 2000;
1 resposta

Olá Dyego!

Se não me engano o exercicio pede "Quais foram os clientes que fizeram mais de 2000 compras em 2016?", então o comando deveria ser dessa forma:

SELECT CPF, COUNT(*) FROM notas_fiscais  WHERE YEAR(DATA_VENDA) = 2016  GROUP BY CPF  HAVING COUNT(*) > 2000;

Mas caso seu intuito seja testar outras alternativas peço desculpas!

Mas respondendo sua duvida, as duas vão retornar o mesmo resultado pelo fato que o COUNT faz a contagem dos registros, no caso das linhas, então no caso desse comando que mencionei acima, ele vai contar quantas notas fiscais cada CPF possui na tabela de notas fiscais, assim ele conta em quantas linhas ou registros aparecem o mesmo CPF, por fim ele mostra o total de linhas que cada CPF possui dentro da tabela de notas fiscais. Então mesmo que você indique o campo NUMERO dentro do COUNT, ainda vai contar os registros que aparacem o mesmo CPF, isso é pelo fato que você está agrupando ou juntando os registros que possuem o mesmo CPF (isso é feito pelo GROUP BY CPF).

Espero que tenha ajudado!