Você está na página 1de 27

Tecnologia de Base de Dados

Funções de Agregação

MSc. Eugénio A. Macumbe


Tecnologia de Base de Dados

Funções de Agregação
• COUNT
• MAX
• MIN
• SUM
• AVG
Tecnologia de Base de Dados

• COUNT – Devolve o número de linhas que resultam


num SELECT.
1. Quantas pessoas existem na nossa base de dados?

SELECT COUNT(Nome ) AS “Total Pessoa”


FROM pessoa;

Resultado
Total Pessoa
12
Tecnologia de Base de Dados

MIN, MAX (Menor e maior valor)


• Definição: As funções MIN e MAX retornam respectivamente
o menor e o maior valor encontrado para um campo.

• Sintaxe: SELECT MIN(<campo>) FROM <tabela> [WHERE


<condição>]

• SELECT MAX(<campo>) FROM <tabela> [WHERE


<condição>]
Tecnologia de Base de Dados
• MAX – Devolve o maior valor da coluna
• MIN – Devolve o menor valor da coluna
As funções MAX e MIN permitem obter o menor e o
maior valor de uma determinada coluna.

Qual é o valor do maior salário pago nesta empresa?

SELECT MAX (salario) AS “Maior salario”


FROM pessoa;
Tecnologia de Base de Dados

Qual é o valor do menor salário pago nesta empresa?

SELECT MIN (salario) AS “Menor salario”


FROM pessoa;

Qual é o menor e o maior valor de comissão superior a


1000 e inferior a 6000?
Tecnologia de Base de Dados

• Resolução
SELECT MIN (valor) AS “Menor
valor”,MAX(Valor) AS “Maior valor”
FROM comissao
WHERE valor>1000 AND valor <5000;

Menor valor Maior valor


2500 4700
Tecnologia de Base de Dados

SUM (Soma de todos valores)


• Definição: A função SUM devolve a soma de todos valores de
um campo.

• Sintaxe: SELECT SUM(<campo>) FROM <tabela> [WHERE


<condição>]
• Exemplos:

• SELECT COD_CLI, SUM(RENDA_CLI) AS ”RENDA


CLIENTE”
FROM CLIENTE;
Tecnologia de Base de Dados

AVG (Média de valores)

• Definição: A função AVG faz a média dos valores de um


campo.

• Sintaxe: SELECT AVG(<campo>) FROM <tabela> [WHERE


<condição>]
SELECT COD_CLI, AVG(RENDA_CLI) AS ”RENDA
CLIENTE”
FROM CLIENTE
GROUP BY COD_CLI;
Tecnologia de Base de Dados

Quantas pessoas recebem um salário superior á 50000?

SELECT COUNT(Nome) AS Numero Total


FROM Salario
WHERE valor > 50000;
Tecnologia de Base de Dados
Subqueries
• Uma SubQuery consiste num comando dentro do outro

• Um comando SELECT pode ser colocado:

– Dentro de um outro SELECT nas cláusulas WHERE,


HAVING, SELECT e FROM;

– Dentro de uma outra Subquery nas mesmas


componetes do ponto anterior;

– Nos comandos INSERT, UPDATE e DELETE;

– Na definição de VIEWs.
Tecnologia de Base de Dados

• É esta capacidade que o SQL tem de integrar comandos


SELECT de forma encadeada, que fez com que fosse
baptizado com o nome de Structured Query Language
( linguagem Estruturada de pesquisas).

• O termo Query identifica, normalmente qualquer


comando SQL. O termo SubQuery é normalmente
utilizado para se referenciar a qualquer SELECT ou
conjunto de SELECT’s contidos dentro de um outro
SELECT.
Tecnologia de Base de Dados
Vejamos , como se implementam e se usam as
SubQueries
Qual é o nome da pessoa com o menor salário?
Para a resolução deste exercício podemos nos considerar na
presença de dois problemas:
1º O menor salário;
2º O nome da pessoa a que esse salário corresponde.
SELECT Min (Salario) AS Menor
FROM Pessoa;

Menor
74000
Tecnologia de Base de Dados

Já ficamos a saber qual o montante que temos


de ir à procura para identificar o indivíduo que
ganha este valor.

Mas quem é que ganha 74000?


SELECT Nome
FROM Pessoa
WHERE salario=74000;

Nome
António Dias
Tecnologia de Base de Dados
• Se por acaso os salários forem aumentados, então
teremos que ir, novamente, calcular o menor valor do
salário alternando em seguida o valor existente no
comando anterior ;
• Assim sendo, podemos obter o mesmo resultado através
de comandos SELECT encadeados.

SELECT Nome
FROM pessoa
WHERE salario = ( SELECT Min (salario)
FROM pessoa);
Tecnologia de Base de Dados
• Neste caso, o salário de cada um dos indivíduos
existentes na tabela pessoa é comparado directamente
com o resultado que se obtém no SELECT interior. O
resultado deste SELECT encadeado é apenas a coluna
Nome seleccionada no SELECT exterior.

Exercício:
Qual é o nome e o salário do individuo mais bem
remunerado na empresa?
Tecnologia de Base de Dados
Resolução

SELECT Nome , Salario


FROM pessoa
WHERE salario =
(SELECT MAX( salario )
FROM pessoa);
Tecnologia de Base de Dados

ORDER BY (Ordem de retorno)


• Definição: A cláusula ORDER BY determina a ordem de
apresentação do resultado de uma pesquisa de forma crescente
ou decrescente.

• Sintaxe:
• SELECT <campo> FROM <tabela> [WHERE <condição>]
ORDER BY <campo_ordenacao> [ASC/DESC]
Tecnologia de Base de Dados

ALIAS (Apelido)
• Definição: Literal que identifica um campo, uma função ou
uma tabela
• Sintaxe:
SELECT (<campo> ou <função>) <alias do retorno>
FROM <tabela> <alias da tabela>

• Exemplo:
• SELECT NOME_CLI AS "NOME DO CLIENTE"
FROM CLIENTE;
Tecnologia de Base de Dados

HAVING (condição do agrupamento)


• Definição: A cláusula HAVING faz com que o resultado da
pesquisa seja feito sob determinada condição. A condição
HAVING está para a cláusula GROUP BY da mesma forma
que a cláusula WHERE está para o comando SELECT.

• Sintaxe:
SELECT (<campo> ou <função>) FROM <tabela>
[WHERE <condição1>]
GROUP BY <campo>
HAVING <condição2>
Tecnologia de Base de Dados

JOIN (Relacionamento de tabelas)


• Introdução a Joins:
• Um join é uma operação que permite consultar duas ou mais
tabelas para produzir um resultado que incorpora linhas e colunas
de cada tabela. O join ocorre em colunas das tabelas que são
comuns em ambas às tabelas.
• Na execução de um join de tabelas, o SQL Server compara os
valores das colunas especificas, linha a linha e ele usa o resultado
da comparação para combinar os valores qualificando-os para
novas linhas.

• São quatro tipos de joins: inner joins, outer joins, cross joins e
self joins.
Tecnologia de Base de Dados

IN (Condição com valores fixos)


• Definição: O operador IN determina os valores fixos aceites de
uma pesquisa.
• Sintaxe:
• SELECT <campo> FROM <tabela>
WHERE <campo> IN (<lista_de_valores>);
Exemplo:
• SELECT * FROM CLIENTE
WHERE COD_CLI IN (1,2,3,4);

• /* selecciona todos os registos da tabela CLIENTE onde o


campo CODIGO for igual a 1 ou 2 ou 3 ou 4 */
Tecnologia de Base de Dados
Exercício
Dada a seguinte base de dados de um banco:
Cliente(cod_cliente, cliente, profissao, localidade)
Agencia(cod_agencia, agencia, localidade)
Conta(num_conta, tipo_conta, cod_cliente, cod_agencia, saldo)
Emprestimo(num_emprestimo, cod_cliente, cod_agencia, valor)

1. Quais os clientes que residem na mesma localidade das agências


onde possuem contas?
2. Quais os clientes com empréstimos de valor superior a 500.000?
3. Para cada agência(cod_agencia) com menos de 1000 contas,
listar os valores máximo e mínimo dos saldos dessas contas,
assim como o saldo médio.
Tecnologia de Base de Dados

4. Quantas clientes possuem contas na agência cujo


cod_agencia=‘A12’?

5. Listar as contas (num_conta, saldo) da agência cujo


cod_agencia=“A12”, por ordem decrescente do seu valor de
saldo.

6. Quais as agências(cod_agencia, agencia) com depositantes


residentes em Maputo?
Tecnologia de Base de Dados
Resolução:
1. SELECT C.*
FROM Cliente C, Agencia A
WHERE C.localidade=A.localidade;

2. SELECT C.*
FROM Cliente C, Emprestimo E
WHERE C.cod_cliente=E. cod_cliente AND E.valor>500000;

3. SELECT cod_agencia, MAX(saldo), MIN(saldo), AVG(saldo)


FROM Conta
GROUP BY cod_agencia
HAVING COUNT(*) < 1000;
Tecnologia de Base de Dados

4. SELECT COUNT(DISTINCT cod_cliente)


FROM Conta
WHERE cod_agencia=‘A12’;

A clausula DISTINCT, evita que clientes com mais de uma


conta sejam contados duas ou mais vezes.

5. SELECT num_conta, saldo


FROM Conta
WHERE cod_agencia=‘A12’
ORDER BY saldo DESC;
Tecnologia de Base de Dados

6. SELECT A. cod_agencia, A.agencia

FROM Conta C, Agencia A

WHERE C. cod_cliente IN

(SELECT cod_cliente

FROM Cliente

WHERE localidade=‘Maputo’) AND


C.cod_agencia=A.cod_agencia;

Você também pode gostar