Saltar navegação

S04.b - GROUP BY e HAVING

Conceitos

Na cláusula GROUP BY, o DB2 agrupa as linhas pelos valores nas colunas especificadas. Em seguida o DB2 trata cada grupo como uma tabela intermediária e aplica a função a esta. Este processo cria uma tabela resultado multi linhas onde cada linha contém o valor agregado de cada grupo. 

A cláusula HAVING é utilizada quando se deseja que a tabela resultado inclua apenas as linhas de grupos que atendam uma seleção específica.

Sintaxe

GROUP BY  column-name [, column-name] ...
  [HAVING selection-condition]

Exemplos

Delaração SELECT que calcula a média do total de faturas para cada cliente.

SELECT INVCUST, AVG(INVTOTAL) AS AVG_TOTAL
  FROM PW0001.INVOICE
  GROUP BY INVCUST

Calcula a média do total de faturas por cliente para faturas maiores que 1000.

SELECT  INVCUST, AVG(INVTOTAL) AS AVG_TOTAL
  FROM PW0001.INVOICE
  WHERE INVTOTAL > 1000
  GROUP BY INVCUST
  ORDER BY AVG_TOTAL

Declaração SELECT que produz uma tabela resultado com uma linha para cada cliente com média do total de faturas acima de 1000.

SELECT  INVCUST, AVG(INVTOTAL) AS AVG_TOTAL
  FROM PW0001.INVOICE
  GROUP BY INVCUST
  HAVING AVG(INVTOTAL) > 1000
  ORDER BY AVG_TOTAL

Declaração SELECT que produz uma tabela resultado com uma linha para cada cliente com mais de 5 faturas acima de 1000.

SELECT  INVCUST, AVG(INVTOTAL) AS AVG_TOTAL
  FROM PW0001.INVOICE
  WHERE INVTOTAL > 1000
  GROUP BY INVCUST
  HAVING COUNT(*) > 5
  ORDER BY AVG_TOTAL

 

 

 

Licença: licença proprietária