Templates de Queries

Escolha um template pronto e use no gerador com um clique.

Vendas

Top 10 clientes por faturamento

firebird

Listar os 10 clientes com maior faturamento total nos últimos 12 meses

Ver SQL
SELECT FIRST 10
  c.CODIGO, c.NOME, SUM(p.VALOR_TOTAL) AS FATURAMENTO
FROM CLIENTES c
JOIN PEDIDOS p ON p.COD_CLIENTE = c.CODIGO
WHERE p.DATA_PEDIDO >= DATEADD(-12 MONTH TO CURRENT_DATE)
GROUP BY c.CODIGO, c.NOME
ORDER BY FATURAMENTO DESC;
Usar template

Vendas por mês

firebird

Total de vendas agrupado por mês no ano atual

Ver SQL
SELECT
  EXTRACT(MONTH FROM p.DATA_PEDIDO) AS MES,
  SUM(p.VALOR_TOTAL) AS TOTAL_VENDAS,
  COUNT(*) AS QTD_PEDIDOS
FROM PEDIDOS p
WHERE EXTRACT(YEAR FROM p.DATA_PEDIDO) = EXTRACT(YEAR FROM CURRENT_DATE)
GROUP BY EXTRACT(MONTH FROM p.DATA_PEDIDO)
ORDER BY MES;
Usar template

Pedidos pendentes de entrega

firebird

Listar pedidos ainda não entregues com dados do cliente

Ver SQL
SELECT
  p.NUMERO, p.DATA_PEDIDO, c.NOME AS CLIENTE, p.VALOR_TOTAL, p.STATUS
FROM PEDIDOS p
JOIN CLIENTES c ON c.CODIGO = p.COD_CLIENTE
WHERE p.STATUS = 'PENDENTE'
ORDER BY p.DATA_PEDIDO;
Usar template

Produtos mais vendidos

firebird

Ranking dos produtos mais vendidos por quantidade no último trimestre

Ver SQL
SELECT FIRST 20
  pr.CODIGO, pr.DESCRICAO, SUM(ip.QUANTIDADE) AS QTD_VENDIDA
FROM ITENS_PEDIDO ip
JOIN PRODUTOS pr ON pr.CODIGO = ip.COD_PRODUTO
JOIN PEDIDOS p ON p.NUMERO = ip.NUM_PEDIDO
WHERE p.DATA_PEDIDO >= DATEADD(-3 MONTH TO CURRENT_DATE)
GROUP BY pr.CODIGO, pr.DESCRICAO
ORDER BY QTD_VENDIDA DESC;
Usar template

Ticket médio por vendedor

firebird

Ticket médio de vendas agrupado por vendedor no último trimestre

Ver SQL
SELECT
  v.CODIGO, v.NOME, AVG(p.VALOR_TOTAL) AS TICKET_MEDIO, COUNT(*) AS QTD_PEDIDOS
FROM PEDIDOS p
JOIN VENDEDORES v ON v.CODIGO = p.COD_VENDEDOR
WHERE p.DATA_PEDIDO >= DATEADD(-3 MONTH TO CURRENT_DATE)
GROUP BY v.CODIGO, v.NOME
ORDER BY TICKET_MEDIO DESC;
Usar template

Clientes que compraram acima de X

firebird

Clientes com valor total de compras superior a um valor mínimo

Ver SQL
SELECT
  c.CODIGO, c.NOME, SUM(p.VALOR_TOTAL) AS TOTAL_COMPRAS
FROM CLIENTES c
JOIN PEDIDOS p ON p.COD_CLIENTE = c.CODIGO
GROUP BY c.CODIGO, c.NOME
HAVING SUM(p.VALOR_TOTAL) > :valor_minimo
ORDER BY TOTAL_COMPRAS DESC;
Usar template

RH

Funcionários por departamento

firebird

Contagem de funcionários ativos agrupados por departamento

Ver SQL
SELECT
  d.DESCRICAO AS DEPARTAMENTO, COUNT(f.CODIGO) AS TOTAL_FUNCIONARIOS
FROM FUNCIONARIOS f
JOIN DEPARTAMENTOS d ON d.CODIGO = f.COD_DEPARTAMENTO
WHERE f.ATIVO = 'S'
GROUP BY d.DESCRICAO
ORDER BY TOTAL_FUNCIONARIOS DESC;
Usar template

Aniversariantes do mês

firebird

Listar funcionários que fazem aniversário no mês atual

Ver SQL
SELECT
  f.NOME, f.DATA_NASCIMENTO, d.DESCRICAO AS DEPARTAMENTO
FROM FUNCIONARIOS f
LEFT JOIN DEPARTAMENTOS d ON d.CODIGO = f.COD_DEPARTAMENTO
WHERE EXTRACT(MONTH FROM f.DATA_NASCIMENTO) = EXTRACT(MONTH FROM CURRENT_DATE)
  AND f.ATIVO = 'S'
ORDER BY EXTRACT(DAY FROM f.DATA_NASCIMENTO);
Usar template

Folha de pagamento por cargo

firebird

Soma de salários agrupada por cargo

Ver SQL
SELECT
  c.DESCRICAO AS CARGO, COUNT(f.CODIGO) AS FUNCIONARIOS, SUM(f.SALARIO) AS TOTAL_SALARIOS
FROM FUNCIONARIOS f
JOIN CARGOS c ON c.CODIGO = f.COD_CARGO
WHERE f.ATIVO = 'S'
GROUP BY c.DESCRICAO
ORDER BY TOTAL_SALARIOS DESC;
Usar template

Admissões no ano

postgresql

Funcionários admitidos no ano atual com departamento

Ver SQL
SELECT
  f.NOME, f.DATA_ADMISSAO, d.DESCRICAO AS DEPARTAMENTO
FROM FUNCIONARIOS f
LEFT JOIN DEPARTAMENTOS d ON d.CODIGO = f.COD_DEPARTAMENTO
WHERE EXTRACT(YEAR FROM f.DATA_ADMISSAO) = EXTRACT(YEAR FROM CURRENT_DATE)
ORDER BY f.DATA_ADMISSAO;
Usar template

Funcionários com mais horas extras

firebird

Ranking de funcionários com maior quantidade de horas extras no mês

Ver SQL
SELECT FIRST 20
  f.CODIGO, f.NOME, SUM(h.HORAS) AS TOTAL_HORAS_EXTRAS
FROM HORAS_EXTRAS h
JOIN FUNCIONARIOS f ON f.CODIGO = h.COD_FUNCIONARIO
WHERE EXTRACT(MONTH FROM h.DATA) = EXTRACT(MONTH FROM CURRENT_DATE)
  AND EXTRACT(YEAR FROM h.DATA) = EXTRACT(YEAR FROM CURRENT_DATE)
GROUP BY f.CODIGO, f.NOME
ORDER BY TOTAL_HORAS_EXTRAS DESC;
Usar template

Aniversariantes do mês por departamento

firebird

Funcionários aniversariantes do mês atual com departamento

Ver SQL
SELECT
  f.NOME, f.DATA_NASCIMENTO, d.DESCRICAO AS DEPARTAMENTO
FROM FUNCIONARIOS f
LEFT JOIN DEPARTAMENTOS d ON d.CODIGO = f.COD_DEPARTAMENTO
WHERE EXTRACT(MONTH FROM f.DATA_NASCIMENTO) = EXTRACT(MONTH FROM CURRENT_DATE)
  AND f.ATIVO = 'S'
ORDER BY EXTRACT(DAY FROM f.DATA_NASCIMENTO), d.DESCRICAO;
Usar template

Estoque

Produtos com estoque baixo

firebird

Produtos cuja quantidade em estoque está abaixo do mínimo

Ver SQL
SELECT
  p.CODIGO, p.DESCRICAO, e.QUANTIDADE, p.ESTOQUE_MINIMO
FROM PRODUTOS p
JOIN ESTOQUE e ON e.COD_PRODUTO = p.CODIGO
WHERE e.QUANTIDADE < p.ESTOQUE_MINIMO
ORDER BY e.QUANTIDADE;
Usar template

Movimentação de estoque por produto

firebird

Entradas e saídas de estoque de um produto nos últimos 30 dias

Ver SQL
SELECT
  m.DATA_MOVIMENTO, m.TIPO, m.QUANTIDADE, m.DOCUMENTO
FROM MOVIMENTO_ESTOQUE m
WHERE m.COD_PRODUTO = :cod_produto
  AND m.DATA_MOVIMENTO >= DATEADD(-30 DAY TO CURRENT_DATE)
ORDER BY m.DATA_MOVIMENTO DESC;
Usar template

Valor total do estoque por categoria

firebird

Valor financeiro do estoque agrupado por categoria de produto

Ver SQL
SELECT
  c.DESCRICAO AS CATEGORIA,
  SUM(e.QUANTIDADE * p.PRECO_CUSTO) AS VALOR_ESTOQUE
FROM ESTOQUE e
JOIN PRODUTOS p ON p.CODIGO = e.COD_PRODUTO
JOIN CATEGORIAS c ON c.CODIGO = p.COD_CATEGORIA
GROUP BY c.DESCRICAO
ORDER BY VALOR_ESTOQUE DESC;
Usar template

Estoque parado

firebird

Produtos sem movimentação de saída nos últimos 90 dias

Ver SQL
SELECT
  p.CODIGO, p.DESCRICAO, e.QUANTIDADE, MAX(m.DATA_MOVIMENTO) AS ULTIMA_SAIDA
FROM PRODUTOS p
JOIN ESTOQUE e ON e.COD_PRODUTO = p.CODIGO
LEFT JOIN MOVIMENTO_ESTOQUE m ON m.COD_PRODUTO = p.CODIGO AND m.TIPO = 'S'
GROUP BY p.CODIGO, p.DESCRICAO, e.QUANTIDADE
HAVING MAX(m.DATA_MOVIMENTO) < DATEADD(-90 DAY TO CURRENT_DATE)
    OR MAX(m.DATA_MOVIMENTO) IS NULL
ORDER BY ULTIMA_SAIDA;
Usar template

Financeiro

Contas a pagar vencidas

firebird

Títulos a pagar com data de vencimento anterior a hoje

Ver SQL
SELECT
  t.NUMERO, t.FORNECEDOR, t.VALOR, t.DATA_VENCIMENTO, t.STATUS
FROM TITULOS_PAGAR t
WHERE t.DATA_VENCIMENTO < CURRENT_DATE
  AND t.STATUS <> 'PAGO'
ORDER BY t.DATA_VENCIMENTO;
Usar template

Receitas vs despesas por mês

mysql

Comparativo mensal de receitas e despesas no ano atual

Ver SQL
SELECT
  MONTH(data) AS mes,
  SUM(CASE WHEN tipo='R' THEN valor ELSE 0 END) AS receitas,
  SUM(CASE WHEN tipo='D' THEN valor ELSE 0 END) AS despesas
FROM LANCAMENTOS
WHERE YEAR(data) = YEAR(CURDATE())
GROUP BY MONTH(data)
ORDER BY mes;
Usar template

Fluxo de caixa diário

firebird

Saldo acumulado dia a dia nos últimos 30 dias

Ver SQL
SELECT
  data,
  SUM(valor) OVER (ORDER BY data) AS saldo_acumulado
FROM (
  SELECT DATA_LANCAMENTO AS data, VALOR FROM LANCAMENTOS
) x
WHERE data >= DATEADD(-30 DAY TO CURRENT_DATE)
ORDER BY data;
Usar template

Despesas por categoria

firebird

Total de despesas agrupado por categoria no mês atual

Ver SQL
SELECT
  c.DESCRICAO AS CATEGORIA, SUM(d.VALOR) AS TOTAL_DESPESAS
FROM DESPESAS d
JOIN CATEGORIAS_DESPESA c ON c.CODIGO = d.COD_CATEGORIA
WHERE EXTRACT(MONTH FROM d.DATA) = EXTRACT(MONTH FROM CURRENT_DATE)
  AND EXTRACT(YEAR FROM d.DATA) = EXTRACT(YEAR FROM CURRENT_DATE)
GROUP BY c.DESCRICAO
ORDER BY TOTAL_DESPESAS DESC;
Usar template

Contas a receber

firebird

Títulos a receber pendentes com data de vencimento

Ver SQL
SELECT
  t.NUMERO, t.CLIENTE, t.VALOR, t.DATA_VENCIMENTO, t.STATUS
FROM TITULOS_RECEBER t
WHERE t.STATUS <> 'RECEBIDO'
ORDER BY t.DATA_VENCIMENTO;
Usar template

Clientes

Clientes inativos (90 dias)

firebird

Clientes sem pedidos nos últimos 90 dias

Ver SQL
SELECT
  c.CODIGO, c.NOME, c.EMAIL, MAX(p.DATA_PEDIDO) AS ULTIMA_COMPRA
FROM CLIENTES c
LEFT JOIN PEDIDOS p ON p.COD_CLIENTE = c.CODIGO
GROUP BY c.CODIGO, c.NOME, c.EMAIL
HAVING MAX(p.DATA_PEDIDO) < DATEADD(-90 DAY TO CURRENT_DATE)
   OR MAX(p.DATA_PEDIDO) IS NULL
ORDER BY ULTIMA_COMPRA;
Usar template

Novos clientes por mês

firebird

Quantidade de clientes cadastrados por mês no ano atual

Ver SQL
SELECT
  EXTRACT(MONTH FROM DATA_CADASTRO) AS MES,
  COUNT(*) AS NOVOS_CLIENTES
FROM CLIENTES
WHERE EXTRACT(YEAR FROM DATA_CADASTRO) = EXTRACT(YEAR FROM CURRENT_DATE)
GROUP BY EXTRACT(MONTH FROM DATA_CADASTRO)
ORDER BY MES;
Usar template

Clientes por cidade/estado

firebird

Distribuição de clientes por cidade e estado

Ver SQL
SELECT
  CIDADE, ESTADO, COUNT(*) AS TOTAL_CLIENTES
FROM CLIENTES
GROUP BY CIDADE, ESTADO
ORDER BY TOTAL_CLIENTES DESC;
Usar template

Top clientes por ticket médio

postgresql

Clientes com maior ticket médio de compra

Ver SQL
SELECT
  c.nome, AVG(p.valor_total) AS ticket_medio, COUNT(*) AS pedidos
FROM clientes c
JOIN pedidos p ON p.cod_cliente = c.codigo
GROUP BY c.nome
HAVING COUNT(*) >= 3
ORDER BY ticket_medio DESC
LIMIT 15;
Usar template

Clientes por região

firebird

Distribuição de clientes por região geográfica

Ver SQL
SELECT
  r.DESCRICAO AS REGIAO, COUNT(c.CODIGO) AS TOTAL_CLIENTES
FROM CLIENTES c
JOIN REGIOES r ON r.CODIGO = c.COD_REGIAO
GROUP BY r.DESCRICAO
ORDER BY TOTAL_CLIENTES DESC;
Usar template