28th Feb 2025 14 minutos de leitura Gráficos com SQL: Um guia para iniciantes Maria Durkin análise de dados Índice Preparando-se para fazer gráficos com SQL 1. Gráfico de barras Exemplo de gráfico de barras Exemplo de vendas de categoria de produto 2. Gráfico de linhas Exemplo de gráfico de linhas Exemplo de vendas de celulares 3. Gráfico de pizza Exemplo de gráfico de pizza Exemplo de divisão demográfica de vendas 4. Histograma Exemplo de histograma Exemplo de distribuição de tempo de entrega 5. Gráfico de dispersão Exemplo de gráfico de dispersão Exemplo de eficácia da publicidade Criação de gráficos com dados exportados do SQL 1. Python 2. Tableau 3. Power BI 4. Looker Studio Aprenda SQL para gráficos e análise de dados O SQL, geralmente conhecido como Structured Query Language (Linguagem de consulta estruturada), é uma ferramenta valiosa para os analistas de dados. Ela permite que você consulte, atualize e organize seus dados. Essa é uma condição prévia essencial para a criação de gráficos. Neste artigo, exploraremos como preparar dados com SQL para uso em visualizações de dados. Os dados brutos só são valiosos se você souber como limpá-los e organizá-los. Portanto, a preparação adequada dos dados para gráficos é uma etapa importante para a criação de gráficos cativantes e informativos. Neste artigo, discutiremos como usar o SQL para limpar os dados que serão usados em um gráfico. Os gráficos são representações visuais de dados que incluem gráficos de barras, gráficos de linhas, gráficos de pizza, gráficos de caixa e muitos outros. Seu objetivo é converter dados complexos em insights claros e acionáveis. Isso é especialmente importante porque os analistas de dados devem ser capazes de comunicar suas percepções ao restante da equipe e a outras partes interessadas. Embora o SQL seja excelente na limpeza e preparação de dados, ele não possui uma funcionalidade de gráficos integrada. No entanto, há muitos recursos externos para fazer isso, incluindo Tableau, Looker Studio, Power BI ou bibliotecas Python. Dito isso, a qualidade de seus gráficos é tão boa quanto os dados usados para criá-los. Se os dados não forem preparados adequadamente, seus gráficos não conseguirão expressar nenhuma mensagem significativa. Por isso, o SQL continua sendo extremamente importante. E que melhor momento para começar a estudar do que agora, com nosso curso SQL para Análise de Dados? Esse curso ensinará a você todas as habilidades essenciais para preparar dados para gráficos. Neste artigo, mostraremos como usar o SQL para preparar seus dados para gráficos usando ferramentas externas. Também serão fornecidos exemplos e consultas SQL para que você possa praticar. Então, com isso dito, vamos começar! Preparando-se para fazer gráficos com SQL A preparação dos dados é a primeira etapa essencial para criar visualizações de dados envolventes. Usando o SQL, podemos organizar, agregar e filtrar dados de forma eficiente com apenas algumas linhas de código. Vamos dar uma olhada em alguns exemplos de gráficos que podem ser criados. (PS: Aqui está a nossa Folha de consulta de SQL para análise de dados para que você possa revisar algumas das funções, se necessário). 1. Gráfico de barras Um gráfico de barras é um tipo de gráfico que contém barras retangulares que representam diferentes categorias de dados. A altura (em um gráfico vertical) ou o comprimento (em um gráfico horizontal) da barra representa o valor da categoria relacionada. Os gráficos de barras são úteis para comparar dados de diferentes categorias, como vendas por produto, pedidos por região e assim por diante. Você pode identificar as diferenças ou tendências dentro dessas categorias em um piscar de olhos. Exemplo de gráfico de barras Aqui está um exemplo de gráfico de barras. Criaremos a consulta SQL para esse gráfico mais adiante neste artigo. De quais informações precisamos para criar um gráfico de barras? Rótulos: Precisamos dos rótulos de cada barra no eixo X (horizontal). A consulta deve retornar os rótulos como uma das colunas na cláusula SELECT. Altura das barras: A altura das barras está de acordo com nosso eixo Y (vertical). Essa é outra coluna que deve ser computada em um SELECT. A altura da barra geralmente será computada usando uma função agregada como SUM() ou COUNT() e GROUP BY usando os rótulos do eixo X. Classificação: Opcionalmente, podemos querer organizar as barras no gráfico em uma determinada ordem. Exemplo de vendas de categoria de produto Imagine que você queira analisar o total de vendas de 2023 para cada categoria de produto. Com a ajuda do SQL, você pode preparar os dados para o gráfico de barras usando a seguinte consulta: SELECT product_category, SUM(sales_amount) AS total_sales FROM sales_data WHERE sale_date BETWEEN '2023-01-01' AND '2023-12-31' GROUP BY product_category ORDER BY total_sales DESC; Explicação: SELECT product_category, SUM(sales_amount) AS total_sales: Primeiro, selecionamos as colunas desejadas e usamos a função de agregação SUM em sales_amount para agregar as vendas por categoria de produto. Esse será o rótulo do eixo X e a altura da barra. WHERE sale_date BETWEEN '2023-01-01' AND '2023-12-31: Queremos avaliar somente as vendas de 2023, portanto, essa cláusula filtra os dados para conter somente as vendas de 2023. GROUP BY product_category: Aqui agrupamos nossos dados por product_category para resumir o total de vendas. ORDER BY total_sales DESC: Por fim, classificamos os dados em ordem decrescente para que as vendas mais altas sejam as primeiras e as mais baixas sejam as últimas. 2. Gráfico de linhas Um gráfico de linhas é um tipo de gráfico que mostra pontos de dados conectados por uma linha. Esse gráfico é uma ótima visualização de dados para mostrar tendências de dados ao longo do tempo, como o acompanhamento da atividade do site em um mês, a análise de tendências de vendas em um ano e muito mais. Exemplo de gráfico de linhas Aqui está um exemplo de gráfico de linhas: Quais informações são necessárias para criar um gráfico de linhas? Rótulos: Precisamos de rótulos (geralmente datas) para o eixo X. Alturada linha: Para cada ponto da linha, precisamos de uma altura de linha. Esse pode ser o valor nessa data, selecionado no banco de dados ou calculado com uma função de agregação. Também pode ser outro valor, como uma média móvel, calculada com a ajuda de funções de janela. Classificação: Para garantir que nossos dados sejam ordenados corretamente por data, usamos ORDER Exemplo de vendas de celulares Vamos imaginar que queremos encontrar os dias de pico de vendas de telefones celulares monitorando as vendas mensais do nosso site. Para fazer isso, podemos calcular a média móvel dos dados de vendas para suavizar as flutuações. Primeiramente, dividiremos a consulta em duas partes: uma subconsulta que coleta os dados necessários e uma consulta principal que calcula a média móvel usando esses dados. Usando SQL, poderíamos preparar a subconsulta da seguinte forma: SELECT DATE(sale_date) AS sale_day, COUNT(*) AS mobile_sales_count FROM sales_data WHERE device_type = 'mobile' GROUP BY sale_day ORDER BY sale_day ASC; Explicação: SELECT DATE(sale_date) AS sale_day, COUNT(*) AS mobile_sales_count: Extrai a data de sale_date e conta as vendas de celulares para cada dia. WHERE device_type = 'mobile': Filtra a coluna device_type para incluir somente as vendas de dispositivos móveis. GROUP BY sale_day: Agrupa os dados por dia. ORDER BY sale_day ASC: Classifica os resultados por data em ordem crescente. Em seguida, levamos essa consulta um passo adiante, utilizando uma média móvel, conforme mencionado. Uma média móvel suaviza as variações de curto prazo nos dados, ajudando a minimizar as flutuações. Uma flutuação é uma variação de curto prazo nos dados, como picos ou quedas diárias, que pode ocultar tendências maiores. Ao usar uma média móvel de 7 dias, podemos determinar a média do dia atual e dos seis dias anteriores. Como resultado, suavizamos as variações diárias e revelamos as tendências semanais. A alteração de nossa consulta anterior nos permitirá fazer exatamente isso: SELECT sale_day, AVG(mobile_sales_count) OVER (ORDER BY sale_day ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_avg FROM ( SELECT DATE(sale_date) AS sale_day, COUNT(*) AS mobile_sales_count FROM sales_data WHERE device_type = 'mobile' GROUP BY DATE(sale_date) ) daily_sales; Explicação: SELECT sale_day, AVG(mobile_sales_count) OVER (ORDER BY sale_day ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_avg: Essa é uma função de janela que calcula uma média móvel de 7 dias (dia atual + 6 dias anteriores) de vendas de celulares, ordenadas por sale_day. FROM (...) daily_sales: Aqui estamos adaptando a consulta anterior como uma subconsulta e nomeando-a como daily_sales. Saiba mais sobre as funções de janela em nosso artigo Exemplo de função da Janela SQL com explicações. 3. Gráfico de pizza Um gráfico de pizza é um gráfico que divide um círculo em seções ou fatias, sendo que cada uma delas representa uma parte do todo. Esse tipo de gráfico é particularmente útil para representar proporções ou porcentagens, como em distribuições demográficas, detalhamentos de fontes de receita e muito mais. Exemplo de gráfico de pizza Um exemplo de gráfico de pizza pode ter a seguinte aparência: Que informações são necessárias para criar um gráfico de pizza? Rótulos: Precisamos de rótulos para cada fatia do gráfico de pizza. Tamanhoda fatia: Precisamos calcular o tamanho de cada fatia. Cálculo deporcentagem: Precisamos calcular a contribuição proporcional de cada grupo para o total, como uma porcentagem. Agrupamento: Geralmente, precisamos agrupar por rótulos de gráfico. Exemplo de divisão demográfica de vendas Vamos imaginar que queremos ver a porcentagem de vendas contribuída por cada segmento demográfico de idade em nossa empresa. Poderíamos usar a seguinte consulta para preparar nossos dados: SELECT CASE WHEN age < 18 THEN 'Below 18' WHEN age BETWEEN 18 AND 24 THEN '18-24' WHEN age BETWEEN 25 AND 34 THEN '25-34' WHEN age BETWEEN 35 AND 44 THEN '35-44' WHEN age BETWEEN 45 AND 54 THEN '45-54' WHEN age >= 55 THEN '55+' END AS age_group, SUM(sales_amount) AS total_sales, SUM(sales_amount) * 100.0 / SUM(SUM(sales_amount)) OVER () AS pc_of_sales FROM sales_data WHERE age IS NOT NULL GROUP BY age_group; Explicação: CASE ... END AS age_group: Usando a instrução CASE, dividimos as idades de nossos clientes em grupos etários especificados. Cada grupo formará uma fatia do nosso gráfico de pizza. SUM(sales_amount) AS total_sales: Usando a função de agregação SUM(), calculamos o valor total de vendas para cada faixa etária. SUM(sales_amount) * 100.0 / SUM(SUM(sales_amount)) OVER () AS pc_of_sales: Usando uma função de janela, calculamos a porcentagem do total de vendas contribuída por cada faixa etária. WHERE age IS NOT NULL: Para limpar os dados, filtramos as linhas com valores NULL na coluna age. GROUP BY age_group: Por fim, agrupamos os dados por nossas faixas etárias definidas para resumir as vendas de cada categoria. 4. Histograma Um histograma é um gráfico que mostra a distribuição ou propagação de dados agrupando-os em intervalos. Isso é especialmente útil quando se procura padrões e tendências na dispersão dos dados. Esse é frequentemente o caso das distribuições de tempo de entrega, volume de vendas em faixas de preço e muito mais. Exemplo de histograma De que informações precisamos para criar um histograma? Rótulos: Precisamos do valor inicial e final de cada compartimento. Aqui usamos intervalos de 10 minutos no eixo X. Alturas dasbarras: Para cada compartimento, precisamos calcular sua altura. Isso geralmente é feito usando uma função de agregação com GROUP BY. Classificação: Normalmente, usamos ORDER BY para que os compartimentos sejam classificados do menor para o maior. Exemplo de distribuição de tempo de entrega Digamos que você trabalhe em uma empresa de entrega de alimentos e queira encontrar a variação nos tempos de entrega em Barcelona. Podemos preparar nossos dados para isso executando a seguinte consulta SQL: SELECT FLOOR(delivery_duration / 10) * 10 AS bin_start, (FLOOR(delivery_duration / 10) + 1) * 10 AS bin_end, COUNT(*) AS no_of_orders FROM deliveries WHERE region = ‘Barcelona’ GROUP BY bin_start ORDER BY bin_start; Explicação: FLOOR(delivery_duration / 10) * 10 AS bin_start: Primeiro, queremos criar nossos intervalos. Para fazer isso, agrupamos delivery_duration em intervalos de 10 minutos. Isso calcula o limite inferior de cada compartimento (bin_start). (FLOOR(delivery_duration / 10) + 1) * 10 AS bin_end: Em seguida, precisamos calcular o limite superior de cada compartimento (bin_end) adicionando 10 minutos a bin_start. COUNT(*) AS no_of_orders: Agora contamos o número de entregas que caem em cada compartimento de 10 minutos. WHERE region = 'Barcelona': Para limitar os dados a Barcelona, filtramos nossa coluna region. GROUP BY bin_start: Agrupamos as entregas por cada intervalo de 10 minutos. ORDER BY bin_start: Por fim, classificamos os grupos em ordem crescente por seus horários de início. 5. Gráfico de dispersão Por último, mas não menos importante, vamos dar uma olhada no gráfico de dispersão. Esse gráfico pode visualizar a possível relação entre até três variáveis por meio da plotagem de pontos de dados. Ele identifica efetivamente correlações e vínculos nos dados, como custo de publicidade versus vendas ou satisfação dos funcionários versus retenção. Exemplo de gráfico de dispersão Quais informações são necessárias para criar um gráfico de dispersão? Coordenadas X e Y para cada ponto. Rótulo: Opcionalmente, precisamos de um rótulo para cada ponto para dar a cada ponto uma cor (como em nosso gráfico de exemplo) ou um rótulo. Esses dados podem ser simplesmente selecionados de um banco de dados ou podem ser computados, como no exemplo abaixo. Exemplo de eficácia da publicidade Digamos que queremos analisar a eficácia de diferentes formas de publicidade nos últimos dois anos, observando seu impacto nas vendas. Usando SQL, podemos preparar os dados da seguinte forma: SELECT DATE_FORMAT(sd.sale_date, '%Y-%m') AS year_month, mc.advertising_type, SUM(mc.advertising_spend) AS total_advertising_spend, SUM(sd.sales) AS total_sales FROM marketing_campaigns mc JOIN sales_data sd ON mc.campaign_id = sd.campaign_id WHERE sd.sale_date BETWEEN '2022-01-01' AND '2023-12-31' GROUP BY month, mc.advertising_type ORDER BY year_month; Explicação: Cada ponto no gráfico corresponde a um mês e a um tipo de publicidade: DATE_FORMAT(sd.sale_date, '%Y-%m') AS year_month: Primeiro, extraímos o ano e o mês de sale_date. mc.advertising_type: Aqui, estamos selecionando o tipo de publicidade, que será usado como um matiz em nosso gráfico de dispersão. O matiz é essencialmente uma terceira camada que podemos adicionar com cores para diferenciar categorias em um gráfico. SUM(mc.advertising_spend) AS total_advertising_spend: Agregamos o total de gastos com publicidade para cada mês e tipo de publicidade usando SUM(). SUM(sd.sales) AS total_sales: Novamente, usamos SUM() para agregar o total de vendas. JOIN sales_data sd ON mc.campaign_id = sd.campaign_id: Como nossos dados desejados estão em duas tabelas separadas, juntamos a tabela marketing_campaigns com a tabela sales_data tabela com base na coluna comum campaign_id. WHERE sd.sale_date BETWEEN '2022-01-01' AND '2023-12-31': Para nos concentrarmos nos dados de 2022 e 2023, filtramos a data de vendas. GROUP BY year_month, mc.advertising_type: Agrupamos os dados por nossas categorias de gráfico, o que nos dá um total por mês e ano por tipo de publicidade. ORDER BY year_month: Por fim, ordenamos os dados em ordem crescente por mês. Se você quiser aprender ainda mais dicas e truques para aproveitar o SQL na criação de gráficos, não deixe de conferir nosso artigo Visualização de dados usando SQL: Um guia completo para analistas de dados. Criação de gráficos com dados exportados do SQL Depois que nossos dados são preparados, precisamos utilizar ferramentas especializadas para criar gráficos fora do SQL. Vamos dar uma olhada em algumas das alternativas e como você pode importar seus dados SQL para elas. 1. Python O Python oferece bibliotecas como Matplotlib e seaborn para a criação de vários gráficos. Usando a biblioteca Python pandas, você pode importar e visualizar os dados do SQL. Vamos ver como fazer isso. Etapa 1: exportar os resultados da consulta SQL para CSV: depois de executar a consulta SQL, salve os resultados como um arquivo CSV. Para obter instruções passo a passo, consulte o artigo que corresponde ao seu dialeto SQL: Como exportar dados do Microsoft SQL Server para um arquivo CSV Como exportar dados do PostgreSQL para um arquivo CSV Como exportar dados do MySQL para um arquivo CSV Como exportar um arquivo CSV de uma consulta T-SQL Etapa 2: Carregar o CSV no Python: Carregue o arquivo CSV em um DataFrame usando o pacote pandas do Python, como visto no código a seguir: import pandas as pd # Load the CSV file df = pd.read_csv('/path/to/sql_export.csv') # Preview the DataFrame print(df.head()) Etapa 3: criar um gráfico usando uma biblioteca Python: Depois que os dados forem importados, poderemos criar nosso gráfico. Neste exemplo, criaremos um gráfico de barras usando Matplotlib e seaborn: import matplotlib.pyplot as plt import seaborn as sns # Create a bar chart plt.figure(figsize=(10, 6)) sns.barplot(x='product_category', y='total_sales', data=df, palette='viridis') # Customize the chart plt.title('Total Sales by Product Category (2023)', fontsize=16) plt.xlabel('Product Category', fontsize=12) plt.ylabel('Total Sales', fontsize=12) plt.xticks(rotation=45) plt.tight_layout() # Show the chart plt.show() 2. Tableau O Tableau é uma solução de Business Intelligence fácil de usar que se conecta diretamente a bancos de dados SQL e gera painéis dinâmicos e interativos. Ele pode até mesmo suportar suas consultas SQL diretamente usando seu editor SQL personalizado. Há também conectores para os principais bancos de dados, como MySQL, PostgreSQL e Snowflake. 3. Power BI O Power BI é um aplicativo popular da Microsoft que pode ser usado para criar relatórios e painéis interativos. Ele também inclui suporte nativo para o SQL Server e outros bancos de dados, permitindo que você realize consultas SQL diretas. 4. Looker Studio O Looker Studio (antigo Google Data Studio) é um aplicativo baseado em nuvem para o desenvolvimento de painéis compartilháveis e interativos. Ele é perfeito para usuários que já estão familiarizados com o ambiente do Google. Ele é compatível com bancos de dados como BigQuery, MySQL e PostgreSQL e oferece suporte a consultas personalizadas. Aprenda SQL para gráficos e análise de dados O SQL é a base da análise de dados e, portanto, desempenha um papel importante na criação de gráficos de dados. Embora o SQL não tenha ferramentas de gráficos incorporadas, seu ponto forte é a preparação e a organização de dados para visualizações de dados. O uso do SQL em conjunto com ferramentas como Python, Tableau, Power BI ou Looker Studio melhora sua capacidade de extrair insights acionáveis e apresentá-los de forma eficaz. Se você é novo no SQL e deseja aprimorar suas habilidades, agora é a hora de começar. O domínio do SQL não só acelerará seu processo de preparação de dados, como também melhorará sua capacidade de produzir gráficos e painéis visualmente atraentes. Comece a aprender SQL hoje mesmo com nosso curso SQL para análise de dados! Você também pode examinar outras habilidades que podem ser valiosas para sua carreira em nosso artigo Habilidades que todo analista de dados deve ter. Bom aprendizado! Tags: análise de dados