DB2 - Exemplos simples - HAVING


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES, Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

DB2 - Exemplos simples - HAVING

Além de poder agrupar dados usando GROUP BY, o SQL também permite filtrar quais grupos incluir e quais excluir.

Por exemplo, você pode querer uma lista de todos os clientes que fizeram pelo menos dois PEDIDOS.
Para obter esses dados, você deve filtrar com base no grupo completo, não em linhas individuais.

HAVING é muito semelhante a WHERE.
A única diferença é que WHERE filtra linhas e HAVING filtra grupos.
WHERE filtra antes de os dados serem agrupados e HAVING filtros depois que os dados são agrupados.

Além disso, a cláusula HAVING foi adicionada ao SQL porque a palavra-chave WHERE não pode ser usada com funções de agregação.

Banco de dados DB2:

Abaixo está uma seleção da tabela "PEDIDOS" no banco de dados DB2.

NROORDEM NROCLIENTE DATAPEDIDO
1001102020-09-08
1002992020-09-01
1003172020-08-25
1004762020-07-19
1005992020-09-21
1006172020-08-25
1007762020-05-19
1008992020-03-01
1009302020-06-25
1010402020-09-19
1011762020-05-19
1011992020-05-19

Exemplo 1:

A seguinte instrução SQL seleciona a lista de todos os clientes que tenham feito pelo menos dois PEDIDOS.

    SELECT NROCLIENTE, COUNT(*) AS PEDIDOS
      FROM PEDIDOS
     GROUP BY NROCLIENTE
    HAVING COUNT(NROCLIENTE) >= 2;

Nesta instrução, a cláusula GROUP BY é utilizada para agrupar os dados por NROCLIENTE de forma que a função COUNT (*) possa retornar o número de PEDIDOS colocados por cada cliente.

A cláusula HAVING filtra os dados para que apenas PEDIDOS com dois ou mais itens sejam retornados.

Resultado:

NROCLIENTE PEDIDOS
172
763
994

Exemplo 2: agrupamento e classificação

Para classificar a saída de GROUP BY, você precisa usar ORDER BY.

    SELECT NROCLIENTE, COUNT(*) AS PEDIDOS
      FROM PEDIDOS
     GROUP BY NROCLIENTE
    HAVING COUNT(NROCLIENTE) >= 2;
     ORDER BY COUNT(NROCLIENTE) DESC;

Nesta instrução, a cláusula GROUP BY é utilizada para agrupar os dados por NROCLIENTE de forma que a função COUNT (*) possa retornar o número de PEDIDOS colocados por cada cliente.

A cláusula HAVING filtra os dados para que apenas PEDIDOS com dois ou mais itens sejam retornados.
Finalmente, a saída é classificada usando a cláusula ORDER BY.

Resultado:

NROCLIENTE PEDIDOS
994
763
172

Veja também: