1
resposta

Relação entre HAVING e sub consulta

Eu entendi a lógica de se usar uma subconsulta no caso de termos uma tabela de controle, porém nesse exemplo da subconsulta usando o HAVING, não consegui exergar a lógica de se usar a subconsulta, no meu ver não existe nenhuma alteração no resultado das duas consultas. Alguém poderia me ajudar a enxergar a diferença?

Consulta: SELECT CPF, COUNT() FROM [NOTAS FISCAIS] WHERE YEAR(DATA) = 2016 GROUP BY CPF HAVING COUNT() > 2000

Com subconsulta: SELECT X.CPF, X.CONTADOR FROM (SELECT CPF, COUNT(*) AS CONTADOR FROM [NOTAS FISCAIS] WHERE YEAR(DATA) = 2016 GROUP BY CPF) X WHERE X.CONTADOR > 2000

1 resposta

Olá Mateus, tudo bem?

Desculpe pela demora em obter retorno.

Na verdade, a lógica por trás da subconsulta com HAVING é exatamente a mesma da consulta sem subconsulta com HAVING.

A diferença entre as duas consultas é apenas a forma como elas são escritas. Na primeira consulta, a cláusula HAVING é usada diretamente na consulta principal, enquanto na segunda consulta, a cláusula WHERE é aplicada na subconsulta e o resultado é filtrado na consulta externa.

Na prática, ambas as consultas retornarão o mesmo resultado. A vantagem de usar a subconsulta é que, em alguns casos, ela pode ser mais fácil de ler e entender, especialmente se houver várias condições complexas na cláusula HAVING.

Além disso, em alguns bancos de dados, usar uma subconsulta pode ser mais eficiente do que usar a cláusula HAVING diretamente na consulta principal, pois a subconsulta pode ser executada primeiro e o resultado pode ser armazenado em cache, o que pode melhorar o desempenho. No entanto, isso depende do banco de dados específico e das condições da consulta.

Espero ter ajudado.

Caso surja alguma dúvida, fico à disposição.

Abraços e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!