📊 O que são Funções de Agregação?
Funções de agregação são ferramentas poderosas que processam múltiplas linhas de dados e retornam um único valor resumido. São essenciais para criar relatórios, calcular estatísticas e obter insights valiosos dos seus dados.
🔢 COUNT()
Conta registros e valores não-nulos
➕ SUM()
Soma valores numéricos
📈 AVG()
Calcula médias aritméticas
⬇️ MIN()
Encontra o menor valor
⬆️ MAX()
Encontra o maior valor
📦 GROUP BY
Agrupa dados por categorias
🎯 Exemplo Básico
AVG(preco) as preco_medio,
MAX(preco) as preco_maximo
FROM produtos
WHERE categoria = 'Eletrônicos';
Esta query retorna estatísticas sobre produtos eletrônicos: quantidade total, preço médio e preço máximo.
🔍 Como Funciona a Agregação - Explicação Detalhada
🛒 Analogia: Caixa de Supermercado
Imagine que você é um caixa de supermercado e precisa fazer um relatório do dia:
📋 Dados Brutos (Notas Fiscais)
- • Nota 1: R$ 150,00
- • Nota 2: R$ 275,00
- • Nota 3: R$ 89,00
- • Nota 4: R$ 420,00
- • ... (centenas de notas)
📊 Resumo (Agregação)
- • COUNT: 312 vendas
- • SUM: R$ 45.890,00
- • AVG: R$ 147,00
- • MIN: R$ 12,00
- • MAX: R$ 1.250,00
O GROUP BY seria como separar por categoria: "Vendas por setor do supermercado" - Padaria, Açougue, Hortifruti, etc.
⚙️ Como a Agregação Funciona - Passo a Passo
O banco de dados identifica os grupos (GROUP BY)
Se não houver GROUP BY, tudo vira um único grupo
Para cada grupo, aplica as funções de agregação
COUNT conta linhas, SUM soma valores, AVG calcula média, etc.
Combina os resultados em uma linha por grupo
Cada grupo vira uma linha no resultado final
Retorna apenas as colunas solicitadas
No nosso exemplo: categoria + estatísticas calculadas
📝 Quebrando a Sintaxe da Agregação
COUNT(*) as total_produtos,
AVG(preco) as preco_medio,
SUM(estoque) as estoque_total
FROM produtos
GROUP BY categoria;
SELECT categoria, COUNT(*), AVG(preco), SUM(estoque)
📋 O que queremos ver: A categoria + 3 estatísticas diferentes
FROM produtos
🏠 Tabela de origem: Vamos analisar os produtos
GROUP BY categoria
🎯 Como agrupar: Separa os produtos por categoria
👀 Exemplo Visual: Antes e Depois da Agregação
📋 Tabela: produtos (Original)
| nome | categoria | preço |
|---|---|---|
| iPhone | Eletrônicos | R$ 5.000 |
| Samsung TV | Eletrônicos | R$ 2.500 |
| Sofá | Móveis | R$ 1.200 |
| Mesa | Móveis | R$ 800 |
| Notebook Dell | Eletrônicos | R$ 3.500 |
⚡ Processo
Agrupar por Categoria
Aplicar Funções
Combinar Resultados
✨ Resultado Agregado
| categoria | total | média |
|---|---|---|
| Eletrônicos | 3 | R$ 3.667 |
| Móveis | 2 | R$ 1.000 |
🔍 Observe: 5 linhas viraram 2! Cada categoria virou uma linha com estatísticas calculadas.
🎯 Diferentes Tipos de Agregação
🔢 COUNT - Contagem
Conta registros ou valores não-nulos
FROM vendas
WHERE data >= '2024-01-01';
Resultado: Número total de vendas no ano
➕ SUM - Soma
Soma valores numéricos de um grupo
FROM vendas
GROUP BY categoria;
Resultado: Total de vendas por categoria
📈 AVG - Média
Calcula a média aritmética
FROM produtos
WHERE categoria = 'Eletrônicos';
Resultado: Preço médio dos eletrônicos
⬆️⬇️ MIN/MAX - Extremos
Encontra menor e maior valor
MAX(valor) as maior
FROM vendas
WHERE mes = 12;
Resultado: Menor e maior venda de dezembro
⚠️ Dicas Importantes sobre Agregação
🚫 NULLs são ignorados
COUNT(*), SUM() e AVG() ignoram valores NULL. Use COALESCE() se precisar tratar NULL como zero.
📏 GROUP BY vem antes de ORDER BY
A ordem correta é: SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY
🔍 HAVING filtra grupos
Use HAVING (não WHERE) para filtrar resultados de agregação: HAVING COUNT(*) > 5
🎯 SELECT pode misturar colunas
Você pode ter colunas normais e agregadas no mesmo SELECT, mas as normais devem estar no GROUP BY
Supabase Setup do Supabase
🚀 Configure seu Projeto Supabase
Para realizar os exercícios práticos, você precisará de um projeto Supabase ativo. Siga os passos abaixo para configurar seu ambiente de desenvolvimento.
1 Criar Projeto no Supabase
- • Acesse supabase.com
- • Clique em "Start your project" ou "New Project"
- • Escolha um nome para seu projeto (ex: "exercicios-agregacao")
- • Defina uma senha segura para o banco de dados
- • Selecione a região mais próxima (São Paulo - sa-east-1)
- • Aguarde a criação do projeto (2-3 minutos)
2 Obter Credenciais de Conexão
- • No dashboard do seu projeto, vá para "Settings" → "API"
- • Copie o Project URL (ex: https://xyzcompany.supabase.co)
- • Copie o anon key (chave pública)
- • Copie o service_role key (chave privada - use com cuidado)
3 Configurar Variáveis de Ambiente
Crie um arquivo .env na raiz do projeto:
SUPABASE_ANON_KEY=sua_chave_anon_aqui
SUPABASE_SERVICE_KEY=sua_service_key_aqui
⚠️ Segurança: Nunca commite o arquivo .env para repositórios públicos!
4 Testar Conexão
Use o código abaixo para testar sua conexão:
const { createClient } = supabase const supabase = createClient( 'sua_url_aqui', 'sua_chave_anon_aqui' ) // Testar consulta
const { data, error } = await supabase .from('produtos') .select('*') .limit(5) if (error) { console.error('Erro:', error) } else { console.log('Conexão OK! Dados:', data) }
Dicas Importantes
- • Mantenha suas credenciais em local seguro
- • Use a chave anon para operações de leitura básicas
- • A service_role key tem privilégios administrativos - use apenas em ambiente seguro
- • Configure regras de segurança (RLS) adequadas no Supabase
- • Teste sempre a conexão antes de começar os exercícios
📚 Exercícios Práticos Personalizados
Sistema de Exercícios Personalizados
Digite seu número de matrícula para gerar exercícios únicos
✅ Exercícios Gerados com Sucesso!
Abaixo estão seus exercícios personalizados baseados no seu número de matrícula.