
Ter uma visão clara do faturamento e das despesas é essencial para a saúde financeira de qualquer empresa. Mas como gerar relatórios financeiros automatizados usando SQL?
Com algumas consultas bem estruturadas, podemos:
- Calcular o faturamento mensal e anual
- Identificar os maiores gastos e categorias de despesas
- Analisar o lucro líquido da empresa
- Criar dashboards financeiros conectados ao banco de dados
Se você quer transformar seus dados financeiros em insights estratégicos, continue lendo!
1. Criando um Relatório de Faturamento Mensal
O primeiro passo para qualquer análise financeira é calcular o total de faturamento da empresa mês a mês.
Consulta SQL para calcular faturamento mensal:
SELECT
YEAR(DATA_VENDA) AS ANO,
MONTH(DATA_VENDA) AS MES,
SUM(VALOR_TOTAL) AS FATURAMENTO
FROM venda
GROUP BY ANO, MES
ORDER BY ANO DESC, MES DESC;
Resultado:
ANO | MES | FATURAMENTO |
---|---|---|
2024 | 3 | 1,500,000.00 |
2024 | 2 | 980,000.00 |
O que essa consulta faz?
- Agrupa as vendas por ano e mês.
- Soma o valor total das vendas.
- Ordena os resultados do mais recente para o mais antigo.
Dica: Para um relatório anual, basta remover MONTH(
DATA_VENDA)
:
SELECT YEAR(DATA_VENDA) AS ANO, SUM(VALOR_TOTAL) AS FATURAMENTO
FROM venda
GROUP BY ANO
ORDER BY ANO DESC;
2. Criando um Relatório de Despesas por Categoria
Além do faturamento, é fundamental acompanhar os custos e despesas da empresa.
Consulta SQL para calcular despesas por categoria:
SELECT
CATEGORIA,
SUM(valor) AS TOTAL_DESPESA
FROM despesa
GROUP BY CATEGORIA
ORDER BY TOTAL_DESPESA DESC;
Resultado:
CATEGORIA | TOTAL_DESPESA |
---|---|
Fornecedores | 520,000.00 |
Marketing | 150,000.00 |
Infraestrutura | 90,000.00 |
O que essa consulta faz?
- Agrupa as despesas por categoria.
- Soma o total gasto em cada uma.
- Ordena da mais cara para a mais barata.
Dica: Para visualizar as despesas mês a mês, podemos incluir YEAR()
e MONTH()
:
SELECT
YEAR(DATA_DESPESA) AS ANO,
MONTH(DATA_DESPESA) AS MES,
CATEGORIA, SUM(valor) AS TOTAL_DESPESA
FROM despesa
GROUP BY ANO, MES, CATEGORIA
ORDER BY ANO DESC, MES DESC, TOTAL_DESPESA DESC;
Agora podemos analisar o impacto de cada despesa ao longo do tempo.
3. Criando um Relatório de Lucro Líquido
Para saber se a empresa está realmente crescendo, precisamos calcular o lucro líquido, que é a diferença entre faturamento e despesas.
Consulta SQL para calcular o lucro líquido:
SELECT
YEAR(v.DATA_VENDA) AS ANO,
MONTH(v.DATA_VENDA) AS MES,
SUM(v.VALOR_TOTAL) AS FATURAMENTO,
COALESCE((SELECT SUM(d.VALOR) FROM despesa d WHERE YEAR(d.DATA_DESPESA) =
YEAR(v.DATA_VENDA) AND MONTH(d.DATA_DESPESA) = MONTH(v.DATA_VENDA)), 0)
AS TOTAL_DESPESA,
SUM(v.VALOR_TOTAL) -
COALESCE((SELECT SUM(d.VALOR) FROM despesas d WHERE YEAR(d.DATA_DESPESA) =
YEAR(v.DATA_VENDA) AND MONTH(d.DATA_DESPESA) = MONTH(v.DATA_VENDA)), 0)
AS LUCRO_LIQUIDO
FROM venda v
GROUP BY ANO, MES
ORDER BY ANO DESC, MES DESC;
📌 Resultado:
ANO | MES | FATURAMENTO | TOTAL_DESPESA | LUCRO_LIQUIDO |
---|---|---|---|---|
2024 | 3 | 1,500,000.00 | 650,000.00 | 850,000.00 |
2024 | 2 | 980,000.00 | 400,000.00 | 580,000.00 |
O que essa consulta faz?
- Agrupa os dados mensalmente.
- Calcula o faturamento e as despesas no mesmo período.
- Usa
COALESCE()
para evitar erros caso não haja despesas registradas em um mês. - Calcula o lucro líquido (faturamento – despesas).
Dica: Se quiser calcular o lucro anual, basta remover MONTH()
.
4. Criando um Relatório de Pagamentos Atrasados
Se a empresa vende a prazo, é essencial acompanhar clientes que estão devendo.
Consulta SQL para encontrar pagamentos atrasados:
SELECT c.NOME, c.EMAIL, p.VALOR, p.DATA_VENCIMENTO,
DATEDIFF(CURDATE(), p.DATA_VENCIMENTO) AS DIAS_ATRASO
FROM pagamento p
INNER JOIN cliente c ON p.ID_CLIENTE = c.ID_CLIENTE
WHERE p.STATUS = 'Pendente' AND p.DATA_VENCIMENTO < CURDATE()
ORDER BY DIAS_ATRASO DESC;
📌 Resultado:
NOME | VALOR | DATA_VENCIMENTO | DIAS_ATRASO | |
---|---|---|---|---|
Ana Souza | [email protected] | 1,500.00 | 2024-03-05 | 12 |
Carlos Lima | [email protected] | 800.00 | 2024-03-10 | 7 |
O que essa consulta faz?
- Lista clientes com pagamentos pendentes.
- Calcula quantos dias de atraso cada um tem.
- Ordena pelos clientes mais atrasados.
Dica: Para calcular juros, podemos multiplicar os dias de atraso por um valor fixo:
SELECT NOME, EMAIL, VALOR, DATA_VENCIMENTO, DIAS_ATRASO,
(VALOR * 0.02 * DIAS_ATRASO) AS JUROS
FROM
(SELECT c.NOME, c.EMAIL, p.VALOR, p.DATA_VENCIMENTO, DATEDIFF(CURDATE(),
p.DATA_VENCIMENTO) AS DIAS_ATRASO
FROM pagamento p
INNER JOIN cliente c ON p.ID_CLIENTE = c.ID_CLIENTE
WHERE p.STATUS = 'Pendente' AND p.DATA_VENCIMENTO < CURDATE()) AS ATRASO;
Agora temos o valor do juros a pagar.
5. Criando um Dashboard Financeiro com SQL e BI
Para visualizar esses relatórios de forma interativa, podemos conectar SQL a uma ferramenta de BI, como Power BI, Tableau ou Metabase.
Passo a passo:
- Criar consultas SQL para faturamento, despesas e lucro.
- Conectar o Power BI ou Tableau ao banco de dados.
- Criar gráficos de barras, linhas e indicadores KPI.
- Configurar atualizações automáticas para relatórios sempre atualizados.
Dica: Criar views no banco de dados para simplificar a importação de dados no BI:
CREATE VIEW relatorio_financeiro AS
SELECT YEAR(v.DATA_VENDA) AS ANO,
MONTH(v.DATA_VENDA) AS MES,
SUM(v.VALOR_TOTAL) AS FATURAMENTO,
SUM(d.VALOR) AS TOTAL_DESPESA, SUM(v.VALOR_TOTAL) – SUM(d.VALOR) AS LUCRO_LIQUIDO
FROM venda v
LEFT JOIN despesa d ON YEAR(d.DATA_DESPESA) = YEAR(v.DATA_VENDA) AND
MONTH(d.DATA_DESPESA) = MONTH(v.DATA_VENDA)
GROUP BY ANO, MES;
Conclusão
Com SQL, podemos automatizar relatórios financeiros e tomar decisões baseadas em dados reais.
- Criamos relatórios de faturamento, despesas e lucro.
- Monitoramos pagamentos atrasados e juros.
- Conectamos os dados a um dashboard financeiro.
Se você quer aprender SQL para análise financeira, continue acompanhando o Blog do SQL e conheça o curso SQL Simplificado!
Agora me conta: Você já usou SQL para análise financeira? Como foi sua experiência?
0 Comentários