1
resposta

Resposta Alternativa

Percebi que posso substituir o comando HAVING por ORDER BY (...) DESC

SELECT CPF, COUNT(*) FROM notas_fiscais
 WHERE YEAR(DATA_VENDA) = 2016
 GROUP BY CPF
ORDER BY COUNT(*) DESC;

Se o resultado também leva à resposta, há alguma prática preferível para SQL?

1 resposta

Olá Felipe, tudo bem? Você chegar ao mesmo resultado pode ser apenas uma coincidência, porém a função dois dois é um pouco diferente, note que o ORDER BY é apenas para ordenar a consulta, já o HAVING faz um filtro nesse agrupamento que é feito pelo GROUP BY, então talvez nesse cenário, por alguma coincidência, ou pelo que está sendo analisado você tenha o mesmo resultado, mas em um outro cenário provavelmente o comportamento será diferente. Então o que eu sugiro é que use cada um de acordo com a funcão, se você deseja filtrar o agrupamento e trazer como resultado apenas os clientes com "mais 2000 compras em 2016" então o mais coerente é usar o HAVING, agora se você precisa apenas ordenar e ter uma lista de todos os clientes com suas respectivas quantidades de compras em 2016 você pode utilizar o ORDER BY.

Espero ter esclarecido sua dúvida!