Voltar para a lista de artigos Artigos
12 minutos de leitura

Análise de crescimento de vendas com a folha de referência do analista de dados: Parte 2

Bem-vindo à Parte 2 de nossa jornada de análise de dados de vendas. Usando a Folha de dicas de SQL para análise de dados, vamos nos aprofundar nas principais métricas e aplicar consultas SQL para descobrir insights sobre consumidores e produtos. Vamos aprimorar essas habilidades em SQL!

Com base em meu artigo anterior, Análise de vendas reais com a folha de referência do analista, este artigo explora métricas de vendas adicionais usando o mesmo conjunto de dados. Vamos nos concentrar em diferentes casos de uso envolvendo consumidores e produtos, continuando a seguir as orientações da Folha de dicas de SQL para análise de dados do site LearnSQL.com.br.

Neste artigo, abordaremos três elementos principais: tópicos básicos de SQL, identificação de padrões de métricas e direcionamento para seções relevantes da Folha de consulta de SQL para análise de dados para referência rápida. Usando um conjunto de dados do Tableau que mostra dados de vendas de artigos para o lar, responderemos a perguntas comerciais relacionadas a clientes e produtos.

O objetivo é praticar o reconhecimento de padrões de relatórios e a aplicação de consultas SQL para resolver essas questões. Embora o conjunto de dados possa evoluir, o foco deve ser o processo e as etapas lógicas na elaboração de consultas

O que você aprenderá:

  • Reconhecer padrões em consultas SQL, análise de métricas e referências a planilhas
  • Aplicar esses padrões em seu trabalho diário com relatórios e SQL

Visão geral

Este artigo está dividido em duas seções: análise de clientes e análise de produtos, abrangendo KPIs, tendências e vários métodos de segmentação.

Para responder às perguntas, aplico técnicas de SQL do artigo anterior, incluindo agregações, proporções e expressões de tabela comuns (CTEs). A análise se concentra em métricas como KPIs, agrupamento, rastreamento de tendências, classificação e segmentação. As referências ao SQL for Data Analysis Cheat Sheet incluem GROUP BY, classificação, extrações de partes de datas, proporções e divisão de números inteiros. Em cada exemplo, eu marco claramente as técnicas SQL relevantes, os padrões de métrica e as referências da folha de consulta.

Os exemplos são organizados por dificuldade, começando com consultas simples e avançando para técnicas mais avançadas, facilitando a aplicação desses métodos a outros conjuntos de dados comerciais.

Como preparar os dados

Como no artigo anterior, utilizo um conjunto de dados aberto do Tableau Public, que contém dados de vendas de artigos para o lar, como escrivaninhas e artigos de papelaria. Ele é amplamente usado em relatórios comerciais e é um ótimo recurso para praticar consultas SQL. Veja a seguir as etapas para preparar os dados.

Baixe o conjunto de dados do Tableau Public.

  • Navegue até Aprender → Dados de amostra → Negócios → Superstore Sales.
  • Baixe o conjunto de dados Superstore Sales.
Análise de crescimento de vendas com o Data Analyst Cheatsheet: Parte 2
  1. Os dados relevantes estão na guia "Orders" (Pedidos).
  2. Abrir o arquivo .xls
  3. Abra a guia "Orders" do arquivo .xls e exporte-a para um arquivo CSV.

Para um IDE SQL, recomendo usar o MySQL Workbench e o MySQL Community Server. Carregue o arquivo CSV em seu banco de dados MySQL para iniciar a consulta.

Como no artigo anterior, você pode fazer o download do código usado neste artigo na minha conta do Github.

Análise de clientes

Vamos começar pelo nível mais fácil no subdomínio do cliente. Resumiremos as diferentes maneiras de analisar clientes para casos de uso financeiro, de pedidos e de segmentação.

Pergunta 1: Quantos clientes existem por período de tempo?

SELECT
    EXTRACT(YEAR FROM DATE(STR_TO_DATE(order_date, '%m/%d/%Y'))) AS order_year,
    EXTRACT(MONTH FROM DATE(STR_TO_DATE(order_date, '%m/%d/%Y'))) AS order_month,
    COUNT(DISTINCT(Customer_ID)) AS active_customers
FROM `Tableau Superstore`.orders
GROUP BY 1, 2
ORDER BY 1, 2;

Resultado: A consulta calcula o total de clientes por período de tempo em todo o conjunto de dados. Ela fornece uma tendência de quantos clientes fizeram compras por ano e mês. Um usuário pode ver como a base de clientes mudou ao longo da história da empresa.

Para saber como escrever relatórios SQL como este, recomendo o Como Criar Relatórios Básicos em SQL curso. Ele tem quase 100 exercícios que o ensinarão a escrever relatórios complexos em SQL.

Pergunta 2: Crie métricas financeiras baseadas no cliente por categoria e subcategoria de produto para receita média por usuário (ARPU) e lucro médio por usuário (APPU) por local

SELECT
      Region,
      State,
      City,
      ROUND(SUM(Sales) / COUNT(DISTINCT `Customer_ID`), 1) AS ARPU,
      ROUND(SUM(Profit) / COUNT(DISTINCT `Customer_ID`), 1) AS APPU
FROM `Tableau Superstore`.orders
GROUP BY 1, 2, 3
ORDER BY 4 DESC;

Resultado: Essa consulta calcula o ARPU e o APPU para a combinação de região, estado e cidade e classifica as cidades pelo ARPU em ordem decrescente. Os resultados mostram as cidades que geram mais ARPU e também mostram seu APPU. Essa consulta pode ser usada para identificar cidades de alto valor que geram a maior receita por cliente para casos de uso de marketing estratégico e/ou estratégia de vendas.

Pergunta 3: Qual é o número médio de pedidos por cliente? Qual é o valor médio do pedido (AOV) por cliente?

SELECT
    ROUND(SUM(Quantity) / COUNT(DISTINCT `Customer_ID`), 1) AS AQPU,
    ROUND(SUM(Sales)/COUNT(order_id), 2) as average_order_value
FROM `Tableau Superstore`.orders

Resultado: Essa consulta calcula dois KPIs relacionados a pedidos (versus os relacionados a finanças da última consulta): Quantidade média por usuário (AQPU), que mede a quantidade média de produtos comprados por cliente único, e Valor médio do pedido (AOV), que mede o valor médio das vendas por pedido. Uma parte interessada pode entender melhor o comportamento de compra do cliente por meio dos pedidos.

Aqui estão algumas perguntas difíceis, ambas relacionadas a segmentações de clientes em estilo classificado. A primeira analisa os clientes por meio de quatro métricas diferentes, enquanto a última combina combinações de métricas para encontrar o segmento certo.

Pergunta 4: Quais são as três principais contas/clientes por margem de lucro, lucro total, vendas totais e frequência de vendas?

WITH customer_metrics AS (
    SELECT 
         customer_name, 
         ROUND(SUM(Sales), 1) AS sales_total,
         ROUND(SUM(Profit), 1) AS profit_total,
         ROUND(SUM(Profit)/SUM(Sales), 1) as profit_margin,
         COUNT(order_id) AS sales_frequency
    FROM  `Tableau Superstore`.orders
    GROUP BY 1
),
ranked_customers AS (
    SELECT 
        customer_name, 
        'Profit Margin' AS metric, 
        profit_margin AS amount,
        DENSE_RANK() OVER (ORDER BY profit_margin DESC) AS customer_rank
    FROM customer_metrics

    UNION ALL

    SELECT 
        customer_name, 
        'Total Profit' AS metric, 
        profit_total AS amount,
        DENSE_RANK() OVER (ORDER BY profit_total DESC) AS customer_rank
    FROM customer_metrics

    UNION ALL

    SELECT 
        customer_name, 
        'Total Sales' AS metric, 
        sales_total AS amount,
        DENSE_RANK() OVER (ORDER BY sales_total DESC) AS customer_rank
    FROM customer_metrics

    UNION ALL

    SELECT 
        customer_name, 
        'Sales Frequency' AS metric, 
        sales_frequency AS amount,
        DENSE_RANK() OVER (ORDER BY sales_frequency DESC) AS customer_rank
    FROM customer_metrics
)
SELECT 
    customer_name, 
    metric, 
    amount,
    customer_rank
FROM ranked_customers
WHERE customer_rank <= 3
ORDER BY 2, 4

Resultado: Esse é mais um tipo de relatório de baixo para cima que mostra várias métricas (vendas totais, lucro total, margem de lucro e frequência de vendas) em um nível granular - clientes individuais. Os resultados mostram os 3 principais clientes em cada uma das 4 categorias. Essa consulta pode ser usada para priorizar clientes de alto valor para estratégias de marketing e vendas direcionadas.

Isenção de responsabilidade - Esse método funciona para segmentar clientes, mas você deve decidir qual métrica filtrar primeiro (receita, lucro ou margem). A ordem afeta seus resultados e nem sempre é óbvia. Mais adiante, veremos uma consulta que classifica os clientes usando todas as métricas juntas.

Para saber mais sobre como usar WITH em consultas SQL, confira o curso Consultas Recursivas.

Pergunta 5: Identifique clientes de alta prioridade com base em métricas como lucro, margem de lucro, frequência de compra e quantidade vendida. Segmente os clientes em grupos de prioridade Baixa, Média e Alta, sendo que a Alta representa aqueles com maior lucro e maior frequência de compra

WITH customer_metrics AS (
    SELECT 
        customer_name, 
        ROUND(SUM(Sales), 1) AS sales_total,
        ROUND(SUM(Profit), 1) AS profit_total,
        ROUND(SUM(Profit)/SUM(Sales), 1) as profit_margin,
        COUNT(order_id) AS sales_frequency
    FROM `Tableau Superstore`.orders
    GROUP BY 1
),
ranked_customers AS (
    SELECT 
        customer_name, 
        sales_total, 
        profit_total, 
        profit_margin,
        sales_frequency, 
        PERCENT_RANK() OVER (ORDER BY profit_margin DESC) AS profit_rank,
        PERCENT_RANK() OVER (ORDER BY sales_frequency DESC) AS frequency_rank
    FROM customer_metrics
),
segmented_customers AS (
 SELECT 
    customer_name, 
    sales_total, 
    profit_total, 
    profit_margin,
    sales_frequency,
    CASE 
        WHEN profit_rank <= 0.1 AND frequency_rank <= 0.1 THEN 'High Profit & High Frequency'
        WHEN profit_rank <= 0.1 THEN 'High Profit'
        WHEN frequency_rank <= 0.1 THEN 'High Frequency'
        ELSE 'Low Profit & Low Frequency'
    END AS customer_segment
 FROM ranked_customers
)
SELECT 
    customer_name, 
    sales_total, 
    profit_total, 
    profit_margin,
    sales_frequency,
    customer_segment
FROM segmented_customers
WHERE customer_segment = 'High Profit & High Frequency'
ORDER BY 3 DESC;

Resultado: Essa consulta segmenta os clientes com base na margem de lucro e na frequência de vendas, identificando os 10% melhores em ambas as categorias. Os resultados mostram os clientes mais valiosos como "Alto lucro e alta frequência". Isso contrasta com a última consulta que tinha as quatro categorias separadas e era difícil combinar os resultados para mostrar os clientes mais valiosos. Essa consulta pode ser usada para priorizar clientes e, em seguida, direcioná-los para campanhas de marketing e/ou vendas.

Para saber mais sobre as funções de janela no SQL, recomendo nosso curso interativo Funções de Janela (Window Functions) em SQL.

Análise de produtos

Aqui estão mais algumas perguntas de nível fácil, desta vez com foco em produtos. As duas primeiras perguntas são lineares a algumas das perguntas dos clientes e exigem análise de tendências, mas a última é um tipo diferente de problema de segmentação.

Pergunta 6: Quantos produtos diferentes são pedidos em cada período de tempo?

SELECT 
    EXTRACT(YEAR FROM DATE(STR_TO_DATE(order_date, '%m/%d/%Y'))) AS order_Year,
    EXTRACT(MONTH FROM DATE(STR_TO_DATE(order_date, '%m/%d/%Y'))) AS order_Month,
    COUNT(DISTINCT product_id) AS unique_items
FROM 
    `Tableau Superstore`.orders
GROUP BY 1, 2
ORDER BY 1, 2 DESC

Resultado: Essa consulta mostra uma tendência no lado do produto para itens exclusivos vendidos. Essa métrica pode ser usada como uma verificação inicial do tipo de inventário dos produtos que estão sendo vendidos.

Pergunta 7: Criar um relatório de vendas, lucro e margem de lucro para cada produto

SELECT 
    product_id,
    category,
    sub_category,
    ROUND(SUM(sales), 1) AS sales_total,
    ROUND(SUM(profit), 1) AS profit_total,
    ROUND(SUM(profit)/SUM(sales), 1) as profit_margin
FROM `Tableau Superstore`.orders
GROUP BY 1, 2, 3
ORDER BY 4 DESC

Resultado:

Essa consulta calcula o total de vendas, o lucro total e a margem de lucro de cada produto e mostra o ID do produto, a categoria e a subcategoria de cada um. Os resultados mostram o desempenho em nível de produto, destacando os produtos mais vendidos e as margens de lucro de cada um. A consulta pode ser usada para encontrar os produtos mais vendidos e mostrar sua lucratividade - é um relatório geral que pode ser usado para determinação de preços e estoque.

Esse é outro tipo de pergunta de nível difícil, que trata de segmentação, mas é diferente das duas primeiras, de clientes. Trata-se de segmentar um resultado agrupado - uma métrica por uma categoria.

Pergunta 8: Quais são os três itens com a menor margem de lucro para cada local, considerando as combinações de item-local. Se houver produtos com empates, mostre-os também.

WITH product_metrics AS (
    SELECT 
        product_id, 
        state,
        city,
        ROUND(SUM(Sales), 1) AS sales_total,
        ROUND(SUM(Profit), 1) AS profit_total,
        ROUND(SUM(Profit)/SUM(Sales), 2) as profit_margin
    FROM `Tableau Superstore`.orders
    GROUP BY 1, 2, 3
),
ranked_products AS (
    SELECT 
        product_id,
        state,
        city, 
        sales_total, 
        profit_total,
        profit_margin,
        DENSE_RANK() OVER (ORDER BY profit_margin ASC) AS profit_rank
    FROM product_metrics
   WHERE profit_margin IS NOT NULL
)
SELECT 
    product_id,
    state,
    city,
    sales_total, 
    profit_margin,
    profit_rank
FROM ranked_products
WHERE profit_rank <= 3
ORDER BY 5 ASC;

Resultado: Essa consulta calculou as métricas de desempenho do produto por combinações de cidade-estado-produto_id e mostra as margens de lucro mais baixas. Os resultados mostram as combinações menos lucrativas e podem ser usados para mostrar as áreas de baixo desempenho - seja para melhorar ou cortar determinados produtos nessas áreas.

Resumo

Os oito exemplos deste artigo continuam a discussão do artigo anterior sobre como responder a perguntas de relatórios em um contexto comercial. Começamos com métricas básicas de KPI, passamos para a análise de tendências e concluímos com cálculos mais avançados de classificação e segmentação.

Ao trabalhar com essas consultas, você viu padrões comuns de SQL usados em relatórios de negócios, incluindo agregações, funções de janela e subconsultas. Quer você tenha acompanhado passo a passo ou simplesmente revisado os exemplos, essas técnicas podem servir como referência prática para analisar dados de vendas em SQL.

Espero que esta análise tenha ajudado a esclarecer como aplicar a Folha de dicas para analistas de dados na prática. Se algo não estiver claro, se você identificar algum erro ou se tiver dúvidas sobre o artigo ou qualquer parte do código, vamos discutir e melhorar juntos! Terei prazer em me conectar no LinkedIne você pode encontrar mais exemplos e informações em meu perfil do Tableau Public ou em meu blog. Aguardamos sua opinião!