Agrupamento e agregação (álgebra relacional)
O operador de agrupamento γ (gama) faz parte do conjunto de operadores estendidos da Álgebra relacional. É utilizado para representar operações a serem aplicadas sobre conjuntos de tuplas de uma relação. O operador de agrupamento reúne as tuplas em grupos sobre os quais podem ser aplicadas funções agregadas. As funções de agregação mais comuns são SOMA (SUM), MÉDIA(AVG), MÁXIMO(MAX), MÍNIMO(MIN) e CONTAR(COUNT).
Sintaxe
[editar | editar código-fonte]Uma expressão de agrupamento é formada de um conjunto de colunas agrupadoras, um conjunto de colunas projetadas e uma relação, no seguinte formato:
- <colunas agrupadoras> γ <colunas projetadas> (<Relação>)
Em que:
<colunas agrupadoras> é um conjunto com nenhuma ou mais colunas a serem utilizadas para agrupamento
<colunas projetadas> é um conjunto com nenhuma ou mais colunas que serão retornadas pela expressão. Nesta lista, as colunas podem ser envolvidas por funções a serem aplicadas às mesmas. As colunas e as funções projetadas podem também ser renomeadas, através da adição de uma seta seguida do novo nome, fazendo com que a relação resultante tenha como nome de coluna o novo nome atribuído.
<Relação> é uma relação da álgebra relacional que possui as colunas utilizadas na lista de colunas projetadas e na lista de funções agregadoras.
Exemplos
[editar | editar código-fonte]Considerando a relação: R1 (C1, C2,C3), o agrupamento pode ser aplicado da seguinte maneira:
- C1 γ C1, SUM(C2) (R1)
Expressão a ser resolvida conforme os passos a seguir:
As tuplas da relação R1 são particionadas em grupos, conforme o valor de C1. Ou seja, as tuplas que possuírem o mesmo valor em C1 serão reunidas em um grupo. Caso não exista coluna informada na lista de colunas agrupadoras, apenas um grupo com todas as tuplas da relação é formado.
Para cada grupo, uma nova tupla é produzida. Caso nenhuma coluna projetada ou função tenha sido informada, a tupla será composta apenas pelos valores resultantes do agrupamento. Caso contrário, a nova tupla será composta por:
As colunas projetadas.
A aplicação das funções agrupadoras ao grupo. No exemplo, para cada grupo, a coluna C2 será somada, produzindo o valor da nova tupla.
Outros exemplos:
C3 γ (R1)
Produz uma nova relação agrupando os valores da coluna C3.
γ MAX(C3) (R1)
Produz uma nova relação com apenas uma tupla, contendo o maior valor da coluna C3.
C1 γ C1, SUM(C3)→SOMA (R1)
Produz uma nova relação a partir do agrupamento das tuplas a partir da coluna C1, contento a coluna C1 e o resultado da soma da coluna C3 renomeado para SOMA.
Exemplos com tabelas
[editar | editar código-fonte]Considerando a tabela FUNCIONARIO, com a seguinte estrutura:
Coluna | Tipo de dado |
---|---|
NOME | texto |
SETOR | texto |
ANO_CONTRATACAO | números inteiros |
SALARIO | números reais |
Considerando também que esta tabela possui os seguintes dados:
NOME | SETOR | ANO_CONTRATACAO | SALARIO |
---|---|---|---|
Ana | Recepção | 2000 | 900,00 |
Pedro | Administração | 1999 | 2000,00 |
Maria | Administração | 2001 | 1500,00 |
Tiago | Linha de produção | 2000 | 1700,00 |
Diversas informações podem ser extraídas destes dados através da aplicação de funções de agregação. Por exemplo:
Para contar quantos funcionários há em cada setor, a seguinte expressão pode ser aplicada:
- SETOR γ SETOR, count(NOME)
Produzindo como saída:
SETOR | count(NOME) |
---|---|
Recepção | 1 |
Administração | 2 |
Linha de produção | 1 |
Para obter o maior salário e o nome do funcionário de maior salário, a seguinte expressão pode ser aplicada:
- γ NOME, max(SALARIO)
Produzindo como saída:
NOME | max(SALARIO) |
---|---|
Pedro | 2000,00 |
Para obter a média de salários por setor e renomeando o resultado da função para MEDIA_SALARIO, a seguinte expressão pode ser aplicada:
- SETOR γ SETOR, avg(SALARIO) → MEDIA_SALARIO
Produzindo como saída:
SETOR | MEDIA_SALARIO |
---|---|
Recepção | 900,00 |
Administração | 1750,00 |
Linha de Produção | 1700,00 |
Referências
[editar | editar código-fonte]Elmasri, Ramez e Shamkant B. Navathe. Sistemas de banco de dados. 6.ed.,São Paulo:Pearson Addison Wesley, 2011.
Garcia-Molina, Hector. Implementação de sistemas de bancos de dados. Rio de Janeiro:Campus,2001.