Aula 003
Banco de Dados
PRONATEC
Programa Nacional de Acesso ao
Ensino Técnico e Emprego
PRONATEC
Programa Nacional de Acesso
ao Ensino Técnico e Emprego
1. Cláusula GROUP BY - Agrupar
• Considere a situação da seguinte consulta:
• “obter a comissão total para o vendedor ID=1”
• Com as cláusulas já vistas: where, order by não temos como
obter a não ser uma lista das vendas aos clientes feitas pelo
vendedor e suas respectivas comissões
• Para acumular todas as vendas em um só valor para um
mesmo vendedor temos que usar a cláusula GROUP BY
• GROUP BY agrupa os dados retornando um resultado
acumulado por funções de grupamento:
sum, count, max, min, last, avg.
• Assim, para obtermos a comissão total do vendedor 1:
Select sum(a.vendas * b.comissao/100)
from cliente a, vendedor b
where a.vendedor=b.id and b.id=1
group by b.id;
2. Funções de Agrupamento
• As funções de agrupamento: GROUP BY são
• SUM( ) – soma os valores específicos do grupamento
• COUNT( ) – conta quantos registros foram agrupados
• AVG( ) – calcula a média aritmética do agrupamento nos
valores especificados nos parâmetros entre “( )”
• MAX( ) – retorna o maior valor do grupamento
• MIN( ) – retorna o menor valor do grupamento
• LAST( ) – retorna o último valor do grupamento (MySQL)
• Algumas vezes devemos usar as funções MAX e MIN para
podermos obter um valor repetido de forma a aparecer
somente um vez no resultado da consulta
• Ex: Obter nome vendedor e comissões totais dos mesmos
Select MAX(b.nome), SUM(a.vendas * b.comissao/100)
from cliente a, vendedor b Group by b.id;
4. Exemplos de Group By
• Obter total das vendas do cliente que mais compra
Select MAX(vendas) from cliente;
• Obter média de comissão dos vendedores
Select AVG(comissao) from vendedor;
• Listar nomes e média de comissões de vendas por
vendedores em ordem alfabética
Select MAX(b.nome) as Vendedor, AVG(a.vendas *
b.comissao) as Media from cliente a,vendedor b where
a.vendedor=b.id group by b.id order by 1;
5. Condições em Agrupamentos
• Em uma consulta com GROUP BY podemos fazer uma
condicional para filtrar o resultado do grupamento. Para
essa finalidade devemos usar a cláusula HAVING ao
invés da já conhecida cláusula WHERE
• O HAVING pode considerar as funções de agrupamento
(MAX,MIN,SUM,AVG e COUNT) já a cláusula where não
pode fazer isso
• Exemplo: listar vendedores com comissões acima de 500
Select max(b.nome), sum(a.vendas * b.comissao/100)
Where a.vendedor=b.id Group By b.id
Having SUM(a.vendas * b.comissao/100)>500

Banco dedados aula003

  • 1.
    Aula 003 Banco deDados PRONATEC Programa Nacional de Acesso ao Ensino Técnico e Emprego
  • 2.
    PRONATEC Programa Nacional deAcesso ao Ensino Técnico e Emprego
  • 3.
    1. Cláusula GROUPBY - Agrupar • Considere a situação da seguinte consulta: • “obter a comissão total para o vendedor ID=1” • Com as cláusulas já vistas: where, order by não temos como obter a não ser uma lista das vendas aos clientes feitas pelo vendedor e suas respectivas comissões • Para acumular todas as vendas em um só valor para um mesmo vendedor temos que usar a cláusula GROUP BY • GROUP BY agrupa os dados retornando um resultado acumulado por funções de grupamento: sum, count, max, min, last, avg. • Assim, para obtermos a comissão total do vendedor 1: Select sum(a.vendas * b.comissao/100) from cliente a, vendedor b where a.vendedor=b.id and b.id=1 group by b.id;
  • 4.
    2. Funções deAgrupamento • As funções de agrupamento: GROUP BY são • SUM( ) – soma os valores específicos do grupamento • COUNT( ) – conta quantos registros foram agrupados • AVG( ) – calcula a média aritmética do agrupamento nos valores especificados nos parâmetros entre “( )” • MAX( ) – retorna o maior valor do grupamento • MIN( ) – retorna o menor valor do grupamento • LAST( ) – retorna o último valor do grupamento (MySQL) • Algumas vezes devemos usar as funções MAX e MIN para podermos obter um valor repetido de forma a aparecer somente um vez no resultado da consulta • Ex: Obter nome vendedor e comissões totais dos mesmos Select MAX(b.nome), SUM(a.vendas * b.comissao/100) from cliente a, vendedor b Group by b.id;
  • 5.
    4. Exemplos deGroup By • Obter total das vendas do cliente que mais compra Select MAX(vendas) from cliente; • Obter média de comissão dos vendedores Select AVG(comissao) from vendedor; • Listar nomes e média de comissões de vendas por vendedores em ordem alfabética Select MAX(b.nome) as Vendedor, AVG(a.vendas * b.comissao) as Media from cliente a,vendedor b where a.vendedor=b.id group by b.id order by 1;
  • 6.
    5. Condições emAgrupamentos • Em uma consulta com GROUP BY podemos fazer uma condicional para filtrar o resultado do grupamento. Para essa finalidade devemos usar a cláusula HAVING ao invés da já conhecida cláusula WHERE • O HAVING pode considerar as funções de agrupamento (MAX,MIN,SUM,AVG e COUNT) já a cláusula where não pode fazer isso • Exemplo: listar vendedores com comissões acima de 500 Select max(b.nome), sum(a.vendas * b.comissao/100) Where a.vendedor=b.id Group By b.id Having SUM(a.vendas * b.comissao/100)>500