Você está na página 1de 10

Curso: Tecnologia em Desenvolvimento de Software

Multiplataform

Disciplina: MODELAGEM DE BANCO DE DADOS


Aulas/semana: 04

Profª Ma. Luciana Zapparolli

Modelagem de Dados

1 de 10
Cláusula Group by e Having

A instrução SELECT possui duas cláusulas poderosas, pouco


compreendidas e usadas: GROUP BY e HAVING.
 
A cláusula GROUP BY organiza dados em grupos, produzindo
sumários. A cláusula HAVING estabelece condições para listar
esses grupos. Dizemos que a cláusula HAVING está para a
cláusula GROUP BY, assim como a cláusula WHERE está
para o comando SELECT.

2 de 10
Cláusula Group by e Having

A sintaxe do comando SELECT com as cláusulas GROUP BY


e HAVING é:

SELECT <coluna(s)>
FROM <tabela> WHERE <condições>
GROUP BY <coluna(s)>
HAVING <condições>
 

3 de 10
Cláusula Group by e Having

Exemplo:

Considerar a tabela Vendas:

Vendedor varchar(30)
Data dateTime
Valor numeric(10,2)

4 de 10
Cláusula Group by e Having

1)Qual o total das vendas?

SELECT SUM(valor) FROM vendas

2)Qual o total das vendas de cada vendedor?

SELECT vendedor, SUM(valor)


FROM vendas
GROUP BY vendedor Vendedor varchar(30)
Data dateTime
Valor numeric(10,2)
5 de 10
Cláusula Group by e Having

3)Quantas vendas foram feitas?

SELECT COUNT(*) FROM vendas

4)Quantas vendas cada vendedor fez?

SELECT vendedor, COUNT(*)


FROM vendas
GROUP BY vendedor Vendedor varchar(30)
Data dateTime
Valor numeric(10,2)
6 de 10
Cláusula Group by e Having

5)Qual a menor e a maior venda?

SELECT MIN(valor), MAX(valor) FROM vendas

6)Qual a menor e a maior venda de cada vendedor?

SELECT vendedor, MIN(valor), MAX(valor)


FROM vendas
GROUP BY vendedor Vendedor varchar(30)
Data dateTime
Valor numeric(10,2)
7 de 10
Cláusula Group by e Having

7)Qual a média das vendas dos dias 15 e 17 de Abril de 2018?

SELECT data, AVG(valor)


FROM vendas
WHERE data IN ('20180415', '20180417')
GROUP BY data

8)Em quais dias as vendas superaram 3.000?

SELECT data, SUM(valor)


FROM vendas Vendedor varchar(30)
GROUP BY data
Data dateTime
HAVING SUM(valor) >3000
Valor numeric(10,2)
8 de 10
Cláusula Group by e Having

9)Em quais dias, no período de 14 a 16/04/2018, a média das


vendas foi menor que 2000?

SELECT data, AVG(valor)


FROM vendas
WHERE data BETWEEN '20180414' AND '20180416'
GROUP BY data
HAVING AVG(valor) <2000

Vendedor varchar(30)
Data dateTime
Valor numeric(10,2)
9 de 10
Cláusula Group by e Having

10)Que vendedores fecharam mais de 2 vendas nos dias 14, 16


e 18 de 04 de 2018?

SELECT vendedor, COUNT(*)


FROM vendas
WHERE data IN ('20180414', '20180416', '20180418')
GROUP BY vendedor
HAVING COUNT(*) >2

Vendedor varchar(30)
Data dateTime
Valor numeric(10,2)
10 de 10

Você também pode gostar