Questão:
Quais são os clientes que fizeram mais de 2000 compras em 2016?
SELECT CPF, COUNT(*) FROM [NOTAS FISCAIS]
WHERE YEAR(DATA) = 2016
GROUP BY CPF
HAVING COUNT(*) > 2000
Questão:
Quais são os clientes que fizeram mais de 2000 compras em 2016?
SELECT CPF, COUNT(*) FROM [NOTAS FISCAIS]
WHERE YEAR(DATA) = 2016
GROUP BY CPF
HAVING COUNT(*) > 2000
Opa, tudo bem?
Teria algo mais específico que provocou a essa dificuldade?
Sempre que tenho alguma dificuldade pra entender um código ouu pra resolver um bug/problema, utilizo uma ideia próxima do "Debug com Pato de Borracha": visualizando passo a passo e buscando explicar cada linha ou bloco a partir da sua função e sentido ali, começando do começo. Podemos aplicar nessa situação também.
• Os pontos chaves dessa questão estão nas condições e no agrupamento.
A tabela "[NOTAS FISCAIS]" apresenta todas as NFs emitidas por extenso. Por exemplo:
CPF_do_cliente1 00001
CPF_do_cliente2 00002
CPF_do_cliente1 00003
CPF_do_cliente3 00004
CPF_do_cliente1 00005
Nesse caso, se quiséssemos saber quanto cada um desses clientes comprou, deveríamos olhar o "CPF_do_cliente" e contar quantas vezes ele se repete. Teremos:
CPF_do_cliente1 se repete 3 vezes; CPF_do_cliente2 se repete 1 vez; CPF_do_cliente3 se repete 1 vez.
Com essa contagem, tem-se a quantidade de compras. Nessa mesma ideia, foi feita a contagem de vezes que os CPFs da tabela se repetiram usando a função COUNT() -- que tem a função de contar a quantidade de dados.
Essa função geralmente é usada com a agregação "GROUP BY", que separa todas as linhas a partir das informações diferentes. No caso de "GROUP BY CPF", são separadas as linhas que tem CPFs diferentes. Quando usada a função de contagem "COUNT()", ele não só vai *separar os diferentes** como também vai contar quantas vezes os diferentes apareceram na tabela.
Para especificar quais dados precisam ser contados, foram usadas as condições:
• WHERE YEAR(DATA) = 2016
-- Só mostrar as linhas cujo ano da coluna "DATA" seja igual a 2016;
• HAVING COUNT(*) > 2000
-- Depois de feita a contagem, deve-se só mostrar as linhas cujas as quantidades sejam maiores que 2000.
Essas informações lhe ajudam um pouco? Se não, comente, provável que alguém aqui do fórum pode lhe ajudar. :P