
Relatórios são uma das aplicações mais comuns do SQL no mundo real. Seja para analisar vendas, acompanhar o desempenho de uma empresa ou monitorar dados de clientes, saber criar relatórios eficientes é uma habilidade essencial para quem trabalha com bancos de dados.
Mas como estruturar um relatório no SQL? Como filtrar, agrupar e ordenar dados de maneira útil?
Neste artigo, você aprenderá:
- Os principais comandos SQL para relatórios
- Como criar relatórios detalhados e sumarizados
- Dicas para otimizar consultas e evitar erros
Se você quer transformar dados em insights valiosos, continue lendo!
1. Entendendo a Estrutura de um Relatório SQL
Todo relatório SQL segue uma estrutura básica:
- Selecionar os dados certos (
SELECT
) - Filtrar informações (
WHERE
) - Agrupar dados (
GROUP BY
) - Ordenar os resultados (
ORDER BY
)
Vamos ver como isso funciona na prática.
2. Criando um Relatório de Vendas Simples
Suponha que temos uma tabela pedidos
com os seguintes campos:
ID_PEDIDO | CLIENTE | PRODUTO | DATA_PEDIDO | QUANTIDADE | PRECO_TOTAL |
---|---|---|---|---|---|
1 | Ana | Notebook | 2024-03-10 | 1 | 3500.00 |
2 | Carlos | Mouse | 2024-03-11 | 2 | 200.00 |
3 | Ana | Teclado | 2024-03-12 | 1 | 150.00 |
Agora, queremos gerar um relatório com todas as vendas do último mês.
Consulta SQL:
SELECT * FROM pedido
WHERE DATA_PEDIDO >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
ORDER BY DATA_PEDIDO DESC;
O que essa consulta faz?
- Filtra os pedidos do último mês.
- Ordena os resultados da venda mais recente para a mais antiga.
3. Criando um Relatório Resumido com GROUP BY
Se quisermos um relatório resumido mostrando o total de vendas por cliente, usamos GROUP BY
.
Consulta SQL:
SELECT CLIENTE, SUM(PRECO_TOTAL) AS TOTAL_GASTO
FROM pedido
GROUP BY CLIENTE
ORDER BY TOTAL_GASTO DESC;
Resultado:
CLIENTE | TOTAL_GASTO |
---|---|
Ana | 3650.00 |
Carlos | 200.00 |
O que essa consulta faz?
- Agrupa os pedidos por cliente.
- Calcula o total gasto por cliente.
- Ordena os clientes do maior para o menor valor gasto.
4. Criando um Relatório por Período (Mensal, Anual, Diário)
Se quisermos ver quantas vendas foram feitas por mês, podemos agrupar os dados por ano e mês.
Consulta SQL:
SELECT YEAR(DATA_PEDIDO) AS ANO, MONTH(DATA_PEDIDO) AS MES, COUNT(*) AS TOTAL_PEDIDO
FROM pedido
GROUP BY ANO, MES
ORDER BY ANO DESC, MES DESC;
Resultado:
ANO | MES | TOTAL_PEDIDO |
---|---|---|
2024 | 3 | 3 |
2024 | 2 | 5 |
O que essa consulta faz?
- Agrupa os pedidos por ano e mês.
- Conta quantos pedidos foram feitos em cada mês.
- Ordena os resultados do mais recente para o mais antigo.
5. Criando Relatórios com JOINS (Dados de Múltiplas Tabelas)
Agora, suponha que temos uma tabela de clientes separada e queremos gerar um relatório que mostre os pedidos com os dados dos clientes.
Consulta SQL usando JOIN:
SELECT cliente.NOME, pedido.PRODUTO, pedido.PRECO_TOTAL, pedido.DATA_PEDIDO
FROM pedido
INNER JOIN cliente ON pedido.ID_CLIENTE = cliente.ID_CLIENTE
ORDER BY pedido.DATA_PEDIDO DESC;
Resultado:
NOME | PRODUTO | PRECO_TOTAL | DATA_PEDIDO |
---|---|---|---|
Ana Souza | Notebook | 3500.00 | 2024-03-10 |
Carlos Lima | Mouse | 200.00 | 2024-03-11 |
O que essa consulta faz?
- Combina dados da tabela
cliente
epedido
. - Retorna um relatório com cliente + produto + valor + data.
6. Erros Comuns ao Criar Relatórios SQL
Erro 1: Esquecer de usar GROUP BY ao usar funções agregadas
Errado:
SELECT CLIENTE, SUM(PRECO_TOTAL) FROM pedido;
Correção:
SELECT CLIENTE, SUM(PRECO_TOTAL) FROM pedido GROUP BY CLIENTE;
Erro 2: Filtrar datas sem considerar horários
Errado:
SELECT * FROM pedido WHERE DATA_PEDIDO = ‘2024-03-10’;
Correção:
SELECT * FROM pedido WHERE DATA_PEDIDO BETWEEN ‘2024-03-10 00:00:00’ AND ‘2024-03-10 23:59:59’;
Erro 3: Criar consultas sem índices em colunas filtradas
Se a consulta está lenta, crie um índice na coluna de data:
CREATE INDEX idx_data ON pedido(DATA_PEDIDO);
Conclusão
Relatórios SQL são essenciais para tomada de decisões e análise de dados.
- Para relatórios detalhados, use
SELECT
,WHERE
eORDER BY
. - Para relatórios sumarizados, use
GROUP BY
comSUM
,COUNT
ouAVG
. - Para relatórios por período, agrupe por ano e mês.
- Para relatórios avançados, use
JOIN
para combinar dados de múltiplas tabelas.
Se você quer aprender mais sobre SQL na prática, continue acompanhando o Blog do SQL e conheça o curso SQL Simplificado, onde você aprende a criar relatórios otimizados e eficientes!
Agora me conta: Você já precisou gerar um relatório SQL? Teve dificuldades?
0 Comentários