1
Apresentação
O objetivo principal das funções de agregação é
criar colunas de acumuladores de um
determinado agrupamento definido pela
cláusula GROUP BY. Se esta cláusula não for
informada o retorno será sempre uma linha.
2
Funções de Agregação
3
SUM
SELECT SUM(A1_SALDUP)
FROM SA1990
WHERE D_E_L_E_T_ <> ‘*’
4
COUNT
SELECT COUNT(*)
FROM SA1990
WHERE D_E_L_E_T_ <> ‘*’
5
COUNT
SELECT COUNT(A1_FILIAL)
FROM SA1990
WHERE D_E_L_E_T_ <> ‘*’
6
AVG
SELECT AVG(A1_SALDUP)
FROM SA1990
WHERE D_E_L_E_T_ <> ‘*’
7
MAX
SELECT MAX(R_E_C_N_O_)
FROM SA1990
8
MIN
SELECT MIN(C6_EMISSAO)
FROM SC6990
WHERE C6_CLI = ‘ 123456’
AND D_E_L_E_T_ <> ‘*’
9
GROUP BY
Ex. Select para obter valor total de pedidos por cliente e data
10
GROUP BY
11
HAVING
Esta cláusula tem por finalidade filtrar os dados que estão numa condição
de agrupamento. Apesar de ser uma cláusula de filtro (semelhante à
cláusula WHERE), ela é dependente da cláusula GROUP BY.
13
DISTINCT
14
SUBSTRING
Ex. Select para apresentar parte do nome do cliente para todos os clientes
que possuem ‘5’ na segunda posição do código.
16
JOINS
17
INNER JOIN
18
INNER JOIN
20
LEFT JOIN
21
LEFT JOIN
Ex. Select para retornar todas os pedidos de venda e o nome do cliente mesmo
que não exista o cliente
24
LEFT JOIN
Ex. Select para retornar todas os pedidos de venda e o nome do cliente mesmo
que não exista o cliente
Ex. Select para retornar todas os pedidos de venda, nome do cliente e o nome do
Vendedor mesmo que não exista o Vendedor
Nota: Não é possível fazer OUTER JOINS subsequentes, ou seja, se fizer OUTER
JOIN de uma tabela que logo em seguida tem relacionamento com outra tabela.
26
RIGHT JOIN
Ex. Select para retornar todos os clientes mesmo que não exista
pedidos relacionados
28
RIGHT JOIN
Ex. Select para retornar todos os clientes mesmo que não exista pedidos
relacionados
Ex. Select para retornar todos os clientes mesmo que não exista pedidos
relacionados
31
FULL JOIN
Ex. Select para retornar todos os clientes e todos os pedidos mesmo que não
exista pedidos ou clientes relacionados
Nota: Nos demais Bancos de Dados não existem este tipo de join. Mas existem
outras formar de resolver este problema utilizando INNER JOIN + LEFT JOIN +
RIGHT JOIN
32
CROSS JOIN
Ex. Select para retornar todos os clientes e todos os pedidos mesmo que não
exista pedidos ou clientes relacionados
33
UNION
35
SUB SELECTS
36
SUB SELECTS
Ex. Select para retornar todos os clientes que compraram o produto ‘x’, utilizando
operador IN
Ex. Select para retornar todos os clientes que compraram o produto ‘x’, utilizando
operador EXISTS
39
Dúvidas ?
rafael.duram@totvs.com.br
40