Anda di halaman 1dari 12

SIN220

Banco de Dados
Funções de agregação

Prof. Rodrigo Smarzaro


UFV
2010-2
Funções Agregadas
 COUNT
 Retorna a quantidade de tuplas ou valores especificados em
uma consulta
Exemplo: Retornar o número de empregados
Se não colocarmos o
DISTINCT, então
SELECT COUNT(*) salários com valores
FROM EMPREGADO idênticos serão
contados novamente
Exemplo: Retornar a quantidade de valores diferentes para
salários da empresa

SELECT COUNT(DISTINCT SALARIO)


FROM EMPREGADO

2
Funções Agregadas
 SUM
Retorna a soma de um conjunto de valores
Exemplo: Retornar o total da folha salarial da empresa

SELECT SUM (SALARIO)


FROM EMPREGADO
 MAX
Retorna o maior valor dentre um conjunto de valores
Exemplo: Retornar o valor do maior salário pago pela empresa

SELECT MAX (SALARIO)


FROM EMPREGADO

3
Funções Agregadas
 MIN
 Retorna o menor valor dentre um conjunto de valores
Exemplo: Retornar o menor salário pago pelo departamento Pesquisa

SELECT MIN (SALARIO)


FROM EMPREGADO JOIN DEPARTAMENTO
ON DNO = DNUMERO
WHERE DNOME = ‘Pesquisa’

 AVG
 Retorna a média dentre um conjunto de valores
Exemplo: Retornar a média de salário pago pela empresa

SELECT AVG (SALARIO)


FROM EMPREGADO

4
Funções Agregadas
 Podemos utilizar funções agregadas em
consultas aninhadas.
Exemplo: Liste todos os empregados que
possuem dois ou mais dependentes.
SELECT PNOME, UNOME O operador >= pode ser
FROM EMPREGADO utilizado porque o
resultado da consulta
WHERE (SELECT COUNT(*) aninhada será um único
FROM DEPENDENTE valor!!!
WHERE SSN=ESSN)>= 2

5
GROUP BY e HAVING
 GROUP BY
 Muitas vezes é interessante aplicar funções de agregação
em grupos de tuplas relacionadas. Para estes casos, a SQL
fornece o comando de agrupamento GROUP BY.

 O GROUP BY particiona o resultado da consulta em


subgrupos que obedecem a um determinado critério de tal
forma que as funções agregadas serão aplicadas
individualmente a cada subgrupo.

 Quando utilizamos GROUP BY, somente os atributos


especificados em na cláusula GROUP BY podem aparecer
na cláusula SELECT, junto com as funções agregadas.

6
GROUP BY e HAVING
Exemplo: Para cada departamento, retornar o seu número, o
número de empregados e a média salarial.

SELECT DNO, COUNT(*), AVG (SALARIO)


FROM EMPREGADO Somente este atributo pode
aparecer junto com as funções
GROUP BY DNO
agregadas na cláusula SELECT

7
GROUP BY e HAVING
 HAVING

 Muitas vezes podemos precisar de aplicar uma


determinada função à um subgrupo ( construído
pelo GROUP BY) de tal forma que somente
aqueles subgrupos que satisfizerem uma
determinada condição serão considerados nos
cálculos das funções.

 Nestas situações, utilizamos o HAVING da


seguinte forma:
8
GROUP BY e HAVING
Exemplo: Para cada projeto com mais de dois funcionários,
liste seu número, seu nome, e o número de empregados
que nele trabalham.
SELECT PNUMERO, PJNOME, COUNT(*)
FROM PROJETO, TRABALHA_EM
No WHERE temos condições
WHERE PNUMERO = PNO para seleção de tuplas
GROUP BY PNUMERO, PJNOME
No HAVING temos condições
HAVING COUNT(*) > 2 para seleção de subgrupos

9
Exemplo - HAVING

Subgrupos que serão


descartados pela cláusula
HAVING
Subgrupos que serão Mantidos
pela cláusula HAVING
Resultado da consulta sem o
HAVING

Resultado Final

10
Resumo das consultas SQL
 Uma consulta em SQL pode ter até seis cláusulas,
mas apenas as duas primeiras são obrigatórias
SELECT e FROM. As cláusulas são especificadas
nesta ordem:

SELECT <lista de atributos>


FROM <lista de tabelas>
[WHERE <condição>]
[GROUP BY <atributos agrupados
[HAVING <condição de agrupamento>]
[ORDER BY <lista de atributos>]

11
Resumo das consultas SQL
 SELECT lista os atributos ou funções que serão recuperados

 FROM especifica todas as relações necessárias para a consulta


(mas não as utilizadas em consultas aninhadas)

 WHERE especifica as condições de seleção e junção de tuplas


para as tabelas especificadas na cláusula FROM

 GROUP BY especifica atributos para agrupamentos

 HAVING especifica condições para a seleção de grupos

 ORDER BY especifica a ordem para mostrar os resultados de


uma consulta

12

Anda mungkin juga menyukai