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:

ANOMESFATURAMENTO
202431,500,000.00
20242980,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:

CATEGORIATOTAL_DESPESA
Fornecedores520,000.00
Marketing150,000.00
Infraestrutura90,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:

ANOMESFATURAMENTOTOTAL_DESPESALUCRO_LIQUIDO
202431,500,000.00650,000.00850,000.00
20242980,000.00400,000.00580,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:

NOMEEMAILVALORDATA_VENCIMENTODIAS_ATRASO
Ana Souza[email protected]1,500.002024-03-0512
Carlos Lima[email protected]800.002024-03-107

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:

  1. Criar consultas SQL para faturamento, despesas e lucro.
  2. Conectar o Power BI ou Tableau ao banco de dados.
  3. Criar gráficos de barras, linhas e indicadores KPI.
  4. 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?

Tags: |

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solicitar exportação de dados

Use este formulário para solicitar uma cópia de seus dados neste site.

Solicitar a remoção de dados

Use este formulário para solicitar a remoção de seus dados neste site.

Solicitar retificação de dados

Use este formulário para solicitar a retificação de seus dados neste site. Aqui você pode corrigir ou atualizar seus dados, por exemplo.

Solicitar cancelamento de inscrição

Use este formulário para solicitar a cancelamento da inscrição do seu e-mail em nossas listas de e-mail.