Translate

Filtros com a cláusula HAVING

Filtros com a cláusula HAVING

Filtros com a cláusula HAVING

Autor: Prof.º Paulo Kaupa

 

Os filtros com a cláusula WHERE, são aplicados antes de realizar agrupamentos de dados. Quando deseja-se aplicar filtros nos grupos já criados, usa-se a cláusula HAVING. Por exemplo:

Deseja-se saber em qual estado uma empresa tem menos que 2 Empregados ou exatamente 2, para isso é necessário fazer um agrupamento de Empregados por Estado e então criar um filtro que traga apenas os estados em que a empresa tenha menos que 10 Empregados, para isso usa-se a cláusula HAVING.

ID_EMPREGADO

NOME

ID_ESTADO

1

Empregado 01

1

2

Empregado 02

1

3

Empregado 03

1

4

Empregado 04

2

5

Empregado 05

3

6

Empregado 06

3

7

Empregado 07

4

 

ID_ESTDADO

ESTADO

1

São Paulo

2

Rio de Janeiro

3

Minas Gerais

4

Acre

 

Para melhor entendimento, a consulta será feita em duas etapas, primeiro realiza-se o agrupamento (Empregados por Estado) e em seguida aplica-se um filtro que retorne apenas os Estados em que a empresa possui menos ou 2 Empregados:

SELECT

               COUNT(ID_ESTADO) AS QUANTIDADE,

ID_ESTADO

FROM

               TB_EMPREGADO

GROUP BY          ID_ESTADO

 

Com a execução do SELECT anterior tem-se o seguinte resultado:

 

Observe que a consulta retornou a quantidade total de Empregados para cada um dos 4 Estados presentes na TB_EMPREGADO.

 

No SELECT a seguir será acrescentado a cláusula HAVING para o filtro:

 

SELECT

               COUNT(ID_ESTADO) AS QUANTIDADE,

ID_ESTADO

FROM

               TB_EMPREGADO

GROUP BY          ID_ESTADO

HAVING COUNT(ID_ESTADO) <= 2

 

O resultado da consulta anterior será apenas os estados que aparecem menos ou 2 vezes

 

Diferente do retorno da Consulta onde não foi aplicado o filtro com a cláusula HAVING, somente forma listados os Estados onde existem 2 ou menos Empregados alocados.

 

Exercícios Propostos

Qual a diferença entre a cláusula WHERE e a cláusula HAVING?

Crie uma tabela chamada TB_DEPENDENTE, com as seguintes colunas:

    • ID_DEPENDENTE,
    • NOME
    • SEXO

Insira na TB_DEPENDENTE 10 Registros de sua escolha.

Elabore um Script que retorne a quantidade de Homens e de Mulheres (GROUP BY).

Elabore uma consulta que retorne apenas a quantidade de Mulheres (GROUP BY e WHERE).

Crie uma consulta que traga em tela o sexo que tem 6 ou mais registros (GROUP BY e HAVING).

Crie uma consulta que traga em tela o sexo que tem menos de 6 registros (GROUP BY e HAVING).

 

 

 

Sobre o Autor:

Mestre em Engenharia de Produção pela Universidade Nove de Julho. Bacharel em Ciência da Computação também pela Universidade Nove de Julho. Atualmente é Professor de ensino superior (Universidade Nove de Julho), Analista de Sistemas na Empresa Atento e Pesquisador na área de Inteligência Computacional aplicada em investimentos na Bolsa de Valores de São Paulo. Possui experiência em Análise e desenvolvimento de sistemas, aplicações de Inteligência Computacional no Mercado de Ações, Análise Técnica para seleção de ações para investimentos na Bolsa de Valores. Curriculo Lattes: http://lattes.cnpq.br/0074185478343196