Cláusula HAVING em SQL Aggregate Functions

Neste tutorial, discutiremos algumas maneiras pelas quais podemos usar ou executar a cláusula HAVING em funções de agregação SQL . O uso dessa cláusula em funções de agregação SQL pode ajudar muito no resumo de dados.

A cláusula HAVING é quase semelhante à instrução WHERE e também pode ser executada junto com ela.

Discutiremos suas correlações e diferenças fornecendo exemplos conforme avançamos neste tutorial.

Índice

Instruções GROUP BY e WHERE no SQL

Para nosso primeiro exemplo, discutiremos como executar a cláusula WHERE e GROUP BY usando a tabela de exemplo abaixo. Observe que só podemos usar a cláusula WHERE com colunas existentes e não apenas em funções agregadas.

Cláusula HAVING em SQL Aggregate Functions

Digamos que queremos obter as vendas totais de um produto com base em sua coluna SaleAmount em que o valor é maior que 2 . Para obter o resultado, nosso comando deve ser o seguinte:

Cláusula HAVING em SQL Aggregate Functions

Primeiro, selecionamos o ProductName e agregamos o SaleAmount para obter o TotalSales. 

Cláusula HAVING em SQL Aggregate Functions

Em seguida, usamos a instrução WHERE aqui, pois estamos tentando obter apenas os produtos em que SaleAmount é maior que 2. O comando 'GROUP BY ProductName' indica que agrupará linhas na coluna ProductName em uma.

Ao executar nosso conjunto de comandos, veremos que de todos os dados nas colunas ProductName e SaleAmount , apenas Bulb e Fan foram exibidos. Isso porque eles eram os únicos com um SaleAmount maior que 2.

Cláusula HAVING em SQL Aggregate Functions

Neste exemplo, a instrução WHERE serve para filtrar resultados com uma coluna existente, que é nosso SaleAmount . Além disso, observe que a instrução WHERE aparece antes de GROUP BY e não pode ser usada para filtrar funções de agregação. Por outro lado, a cláusula HAVING aparece após o GROUP BY e é usada para filtragem com base em uma função agregada. 

Cláusula GROUP BY e HAVING no SQL

Neste exemplo, vamos demonstrar a diferença entre a instrução WHERE e a cláusula HAVING . Usaremos o mesmo objetivo do exemplo anterior para que possamos comparar e avaliar os resultados. 

Vamos primeiro exibir os produtos com suas vendas totais usando o comando abaixo. Como você pode ver, nosso primeiro comando ainda é o mesmo que nosso primeiro comando executando a instrução WHERE .

Cláusula HAVING em SQL Aggregate Functions

Se formos executar nossos dois primeiros comandos, teremos o seguinte resultado:

Cláusula HAVING em SQL Aggregate Functions

Agora, digamos que queremos apenas exibir produtos cuja venda total seja superior a 5. Não podemos usar a  instrução WHERE , pois ela só pode ser usada com colunas existentes. Portanto, precisamos usar a cláusula HAVING , pois estaremos filtrando a partir de uma função agregada. 

Cláusula HAVING em SQL Aggregate Functions

Observe como usamos a cláusula HAVING após GROUP BY , ao contrário da instrução WHERE usada antes de GROUP BY. Isso ocorre porque o SQL agrupará os registros antes de avaliar a cláusula HAVING

Vamos então executar esses comandos junto com HAVING SUM(SaleAmount)>5 . Depois de especificar que queremos obter apenas os produtos cujo preço total seja superior a 5, veremos que em nossa tabela de resultados atual, não veremos mais a Pena . Isso porque seu total é menor que 5

Cláusula HAVING em SQL Aggregate Functions

Resumindo, quando queremos filtrar dados de nossa tabela com base em uma coluna existente, usamos a cláusula WHERE , enquanto quando queremos filtrar dados de uma função agregada, usamos a cláusula HAVING

Cláusula HAVING e WHERE no SQL Server Management Studio (SSMS)

Agora, avançaremos discutindo e demonstrando como podemos executar a cláusula HAVING no SQL Server Management Studio (SSMS). Também abordaremos a diferença entre a cláusula HAVING e a cláusula WHERE fornecendo exemplos.

Abaixo estão nossos dados de amostra SalesOrderHeader. Esses dados consistem em 100 linhas. Para nosso exemplo, queremos obter TotalSale por CustomerID onde TotalSale é maior que 10000 . Observe que a venda total é baseada na soma dos valores da coluna TotalDue .

Cláusula HAVING em SQL Aggregate Functions

Primeiro, deixe-me demonstrar por que não podemos usar a cláusula WHERE quando queremos filtrar uma função agregada com base em nosso exemplo acima. 

Usaremos o exemplo de conjunto de comandos da imagem abaixo. Como você pode ver, tecnicamente temos o mesmo conjunto de comandos do nosso primeiro exemplo.

No entanto, quando clicamos em Executar no canto superior esquerdo, isso resultará em um erro porque não podemos usar a cláusula WHERE sozinha quando estamos filtrando na função agregada.

Cláusula HAVING em SQL Aggregate Functions

Para corrigir o erro, precisamos filtrar o resultado usando a cláusula HAVING em vez da cláusula WHERE . Nosso novo conjunto de comandos deve ser semelhante à imagem abaixo.

Cláusula HAVING em SQL Aggregate Functions

Agora, podemos ver que nosso erro foi corrigido e contém os resultados por CustomerID com TotalSale maior que 10000 .

Novamente, a cláusula WHERE é sempre usada antes da cláusula GROUP BY , enquanto a cláusula HAVING é sempre usada após uma cláusula GROUP BY .

Usando as cláusulas HAVING e WHERE no SQL  

Para este exemplo, digamos que queremos usar a cláusula WHERE e HAVING ao mesmo tempo. Vamos tentar obter o TotalSale por CustomerID onde TotalSale é maior que 10000 mas somente com clientes onde seu TerritoryID é igual a 1

Como queremos filtrar os resultados com clientes que tenham 1 como TerritoryID , usaremos a cláusula WHERE. Portanto, nosso comando deve ser o mesmo que o anterior. Novamente, adicionamos uma cláusula WHERE antes da cláusula GROUP BY.

Cláusula HAVING em SQL Aggregate Functions

Por enquanto, não podemos ver muita diferença entre nosso resultado anterior e este novo. No entanto, se você observar atentamente o canto inferior direito, agora temos apenas 64 linhas em comparação com a anterior com 505 linhas de dados. Isso ocorre porque os resultados também são filtrados com base em seu TerritoryID .

Conclusão

Para resumir, só podemos usar a cláusula WHERE com colunas existentes. Se precisarmos filtrar com funções agregadas, precisamos usar a cláusula HAVING .

Usar a cláusula HAVING em funções de agregação SQL e praticar maneiras de executar a cláusula HAVING e a cláusula WHERE juntas pode fornecer conveniência aos usuários ao trabalhar em um grande número de dados ou registros. 

Espero ter fornecido a você informações e compreensão suficientes sobre como usar a cláusula HAVING em funções de agregação SQL. Se você quiser saber mais sobre este tópico e outros conteúdos relacionados, certamente pode conferir a lista de links relevantes abaixo.

Tudo de bom,

Hafiz

Leave a Comment

Colunas calculadas no SharePoint | Uma visão geral

Colunas calculadas no SharePoint | Uma visão geral

Descubra a importância das colunas calculadas no SharePoint e como elas podem realizar cálculos automáticos e obtenção de dados em suas listas.

Atributos pré-atentivos: como isso pode afetar seu relatório

Atributos pré-atentivos: como isso pode afetar seu relatório

Descubra todos os atributos pré-atentivos e saiba como isso pode impactar significativamente seu relatório do LuckyTemplates

Calcular Dias de Estoque Zero – LuckyTemplates Inventory Management Insights

Calcular Dias de Estoque Zero – LuckyTemplates Inventory Management Insights

Aprenda a contar o número total de dias em que você não tinha estoque por meio dessa técnica eficaz de gerenciamento de inventário do LuckyTemplates.

Usando exibições de gerenciamento dinâmico (DMV) no DAX Studio

Usando exibições de gerenciamento dinâmico (DMV) no DAX Studio

Saiba mais sobre as exibições de gerenciamento dinâmico (DMV) no DAX Studio e como usá-las para carregar conjuntos de dados diretamente no LuckyTemplates.

Variáveis ​​e expressões dentro do editor do Power Query

Variáveis ​​e expressões dentro do editor do Power Query

Este tutorial irá discutir sobre Variáveis e Expressões dentro do Editor do Power Query, destacando a importância de variáveis M e sua sintaxe.

Como calcular a diferença em dias entre compras usando o DAX no LuckyTemplates

Como calcular a diferença em dias entre compras usando o DAX no LuckyTemplates

Aprenda a calcular a diferença em dias entre compras usando DAX no LuckyTemplates com este guia completo.

Calculando a média no LuckyTemplates: isolando os resultados do dia da semana ou do fim de semana usando o DAX

Calculando a média no LuckyTemplates: isolando os resultados do dia da semana ou do fim de semana usando o DAX

Calcular uma média no LuckyTemplates envolve técnicas DAX para obter dados precisos em relatórios de negócios.

O que é self em Python: exemplos do mundo real

O que é self em Python: exemplos do mundo real

O que é self em Python: exemplos do mundo real

Como salvar e carregar um arquivo RDS em R

Como salvar e carregar um arquivo RDS em R

Você aprenderá como salvar e carregar objetos de um arquivo .rds no R. Este blog também abordará como importar objetos do R para o LuckyTemplates.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Neste tutorial de linguagem de codificação DAX, aprenda como usar a função GENERATE e como alterar um título de medida dinamicamente.