1
resposta

Dúvidas no entendimento da consulta

Olá,

eu consegui chegar na resposta certa com a consulta:

SELECT CPF,COUNT(NUMERO) FROM NOTAS_FISCAIS WHERE TO_CHAR(DATA_VENDA, 'YYYY') = 2016 GROUP BY CPF HAVING COUNT(NUMERO) > 2000;

Porém, tenho2 dúvidas:

1ª Ao utilizar o COUNT(NUMERO) ou COUNT(*), o resultado é o mesmo, isso ocorre porque a contagem de ocorrência do campo NÚMERO é o mesmo da contagem de linhas da tabela? Vcs podem me explicar isso melhor, quando usar * ou o nome do registro?

2ª Antes de chegar na resposta final, construi a consulta abaixo e vi que o resultado não consta a contagem de compras com valores menores que 6000. Como no exercício pediu compras maiores que 2000 e no ano de 2016, após a aplicar essa condição o resultado foi de 3 clientes. Nesse caso, com a query genérica abaixo não deveria a contagem de todas compras do clientes incluindo as de 6000 e 2000?

SELECT CPF, COUNT(*) FROM NOTAS_FISCAIS GROUP BY CPF;

Resultado da consulta: CPF COUNT(*) 8502682733 6260 3623344710 6357 7771579779 6187 50534475787 6367 1471156710 6317 5576228758 6389 19290992743 6247 492472718 6237 5648641702 6384 5840119709 6281 9283760794 6310 2600586709 6231 95939180787 7 94387575700 6296 8719655770 6090

1 resposta

Bom dia!

  1. Eu entendo que é utilizado o count( * ) nos casos em que deseja contar os valores nulos também. Ao utilizar count(numero) você conta somente os registros não nulos do campo(coluna). Os resultados foram os mesmos porque não existentem nulos no campo numero.
  2. Não estou fazendo esse curso, mas pelo o que entendi na consulta 02 você não especifica o ano e por isso o resultado é maior.

SELECT CPF,COUNT(NUMERO) FROM NOTAS_FISCAIS WHERE TO_CHAR(DATA_VENDA, 'YYYY') = 2016 GROUP BY CPF HAVING COUNT(NUMERO) > 2000; SELECT CPF, COUNT(*) FROM NOTAS_FISCAIS GROUP BY CPF;