Exercícios Práticos de Funções de Agregação

Supabase + PostgreSQL • Análise de Dados

📊 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

SELECT COUNT(*) as total_produtos,
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

1
O banco de dados identifica os grupos (GROUP BY)

Se não houver GROUP BY, tudo vira um único grupo

2
Para cada grupo, aplica as funções de agregação

COUNT conta linhas, SUM soma valores, AVG calcula média, etc.

3
Combina os resultados em uma linha por grupo

Cada grupo vira uma linha no resultado final

4
Retorna apenas as colunas solicitadas

No nosso exemplo: categoria + estatísticas calculadas

📝 Quebrando a Sintaxe da Agregação

SELECT categoria,
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

SELECT COUNT(*) as total_vendas
FROM vendas
WHERE data >= '2024-01-01';

Resultado: Número total de vendas no ano

➕ SUM - Soma

Soma valores numéricos de um grupo

SELECT categoria, SUM(valor) as total
FROM vendas
GROUP BY categoria;

Resultado: Total de vendas por categoria

📈 AVG - Média

Calcula a média aritmética

SELECT AVG(preco) as preco_medio
FROM produtos
WHERE categoria = 'Eletrônicos';

Resultado: Preço médio dos eletrônicos

⬆️⬇️ MIN/MAX - Extremos

Encontra menor e maior valor

SELECT MIN(valor) as menor,
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_URL=sua_url_aqui
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:

// Testar conexão com Supabase
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