CodeGym /Cursos /SQL SELF /Criando relatórios básicos

Criando relatórios básicos

SQL SELF
Nível 59 , Lição 2
Disponível

Antes de se perder na sintaxe do SQL e nas variáveis, bora lembrar: funções agregadas são tipo seus melhores parças pra contar tudo e mais um pouco. Elas ajudam a calcular dados totais, médias e fazer aquela mágica em cima de um monte de linhas.

Funções agregadas servem pra fazer operações matemáticas em grupos de linhas. As principais são:

  • SUM(): soma os valores.
  • AVG(): calcula o valor médio.
  • COUNT(): conta quantas linhas tem no resultado.

Funções agregadas são super úteis quando você tá lidando com muitos dados e quer um relatório resumido: quantos pedidos você teve, qual o total deles, ou qual foi o maior valor de compra do dia. Bora ver algumas funções agregadas na prática.

Contando linhas: função COUNT()

A função COUNT() serve pra contar quantas linhas tem numa tabela. Vamos ver como ela funciona com exemplos.

-- Contando todas as linhas na tabela de pedidos
SELECT COUNT(*) AS total_de_pedidos
FROM orders;

-- Contando clientes únicos
SELECT COUNT(DISTINCT customer_id) AS clientes_unicos
FROM orders;

-- Contando pedidos com valor acima de 100
SELECT COUNT(*) AS pedidos_valor_alto
FROM orders
WHERE total_amount > 100;

A função COUNT() é muito usada pra contar registros, valores únicos, e também junto com filtros, tipo "quantos estudantes se inscreveram nos cursos de Python".

Somando dados: função SUM()

A função SUM() calcula a soma dos valores de uma coluna. Agora bora somar todas as compras dos clientes.

-- Soma do faturamento total
SELECT SUM(total_amount) AS faturamento_total
FROM orders;

-- Soma das compras de um cliente específico
SELECT SUM(total_amount) AS gasto_do_cliente
FROM orders
WHERE customer_id = 101;

-- Soma dos pedidos por categoria
SELECT category, SUM(total_amount) AS faturamento_categoria
FROM orders
GROUP BY category;

SUM() é a ferramenta principal pra analisar vendas, faturamento e qualquer outro total. Por exemplo, quer saber quanto o centro comercial faturou no mês passado? Moleza.

Médias: função AVG()

A função AVG() ajuda a calcular a média dos dados. Tipo, média das notas dos alunos ou o ticket médio dos clientes.

-- Valor médio dos pedidos
SELECT AVG(total_amount) AS valor_medio_pedido
FROM orders;

-- Valor médio dos pedidos por categoria
SELECT category, AVG(total_amount) AS valor_medio_pedido
FROM orders
GROUP BY category;

-- Ticket médio dos clientes nos últimos 7 dias
SELECT AVG(total_amount) AS ticket_medio_ultima_semana
FROM orders
WHERE order_date >= NOW() - INTERVAL '7 days';

Média é útil pra analisar qualidade do atendimento, achar anomalias e calcular métricas chave, tipo lucro médio por cliente.

Usando funções agregadas na análise

Agora que a gente já conhece as funções principais, bora ver como usar elas pra criar relatórios analíticos básicos.

Exemplo 1: faturamento total e quantidade de pedidos

Imagina que você quer saber quantos pedidos foram feitos e qual foi o faturamento total do mês.

SELECT
    COUNT(*) AS total_de_pedidos,
    SUM(total_amount) AS faturamento_total
FROM orders
WHERE order_date >= '2023-10-01' AND order_date <= '2023-10-31';

Exemplo 2: média de faturamento por categoria

E se a gente quiser dividir o faturamento por categoria de produto?

SELECT
    category,
    COUNT(*) AS total_de_pedidos,
    SUM(total_amount) AS faturamento_total,
    AVG(total_amount) AS valor_medio_pedido
FROM orders
GROUP BY category;

Exemplo 3: pedidos dos últimos 7 dias

Às vezes você precisa analisar métricas de períodos curtos, tipo da última semana.

SELECT
    COUNT(*) AS pedidos_ultima_semana,
    SUM(total_amount) AS faturamento_ultima_semana,
    AVG(total_amount) AS ticket_medio_ultima_semana
FROM orders
WHERE order_date >= NOW() - INTERVAL '7 days';

Casos práticos com desafios reais

Desafio: Análise de vendas por região

Imagina que você é dono de uma rede de lojas e quer analisar como o faturamento ficou distribuído por região.

SELECT
    region,
    COUNT(*) AS total_de_pedidos,
    SUM(total_amount) AS faturamento_total,
    AVG(total_amount) AS valor_medio_pedido
FROM orders
GROUP BY region
ORDER BY faturamento_total DESC;

Desafio: Top 10 clientes por faturamento

Agora vamos colocar um pouco de lógica pra pegar o top 10 clientes pelo valor total dos pedidos.

SELECT
    customer_id,
    SUM(total_amount) AS gasto_total
FROM orders
GROUP BY customer_id
ORDER BY gasto_total DESC
LIMIT 10;

Desafio: Comparando faturamento por dia da semana

Quer saber em quais dias da semana seu negócio fatura mais? Olha só esse exemplo:

SELECT
    TO_CHAR(order_date, 'Day') AS dia_da_semana,
    SUM(total_amount) AS faturamento_total,
    AVG(total_amount) AS valor_medio_pedido
FROM orders
GROUP BY TO_CHAR(order_date, 'Day')
ORDER BY faturamento_total DESC;
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION