SQL

Como o SQL é usado na análise de dados profissional

Rael Rodrigues 2 de agosto de 2026 13 min de leitura

No dia a dia de quem trabalha com dados, é raro encontrar alguém que use só uma ferramenta. O mais comum é uma combinação: um pouco de SQL aqui, uma planilha ali, um notebook em Python para o modelo, um dashboard em Power BI para apresentar o resultado. Este artigo foca em uma peça específica dessa engrenagem — o SQL — e explica, na prática, os dois papéis em que ele mais aparece no trabalho de um analista profissional: como ferramenta de investigação rápida (a chamada análise ad-hoc) e como camada de pré-tratamento de dados antes que eles cheguem a ferramentas como Python, Power BI ou Tableau.

O SQL não substitui Python nem as ferramentas de BI

Vale deixar isso claro logo de início, o SQL não compete com Python nem com plataformas de BI. Ele resolve um problema diferente. Python é excelente para modelagem estatística, machine learning e análises que exigem lógica de programação mais elaborada. Ferramentas de BI como Power BI, Tableau e Looker Studio são construídas para transformar dados já organizados em painéis visuais que qualquer pessoa do negócio consegue interpretar sem escrever uma linha de código. O SQL, por sua vez, atua numa camada anterior a essas duas: ele é a linguagem que fala diretamente com o banco de dados onde as informações moram, seja um sistema de vendas, um cadastro de clientes ou uma base de eventos de um aplicativo.

Por isso, em times de dados maduros, o SQL raramente aparece como a etapa final de uma análise. Ele aparece antes — preparando o terreno para que Python ou o BI façam o que fazem de melhor.

Análise ad-hoc: a pergunta rápida que não precisa de um dashboard

Um dos usos mais comuns do SQL no trabalho profissional é responder perguntas pontuais que surgem no meio do dia — o que os times de dados costumam chamar de análise ad-hoc. Alguém do time de marketing quer saber quantos clientes fizeram uma segunda compra no último trimestre; o time financeiro quer entender por que a receita de uma categoria específica caiu na semana passada; o gerente de produto quer confirmar se uma funcionalidade nova está sendo usada por um grupo específico de usuários. Nenhuma dessas perguntas justifica construir um dashboard novo ou escrever um script em Python — elas pedem uma resposta rápida, geralmente entregue em minutos.

É exatamente nesse cenário que o SQL se destaca. Como a linguagem foi pensada para se aproximar do raciocínio humano, um analista consegue escrever uma consulta que filtra, agrupa e cruza tabelas quase na velocidade em que a pergunta é formulada, direto na fonte dos dados, sem precisar exportar nada para outro programa, frases como “selecione o valor da tabela de vendas onde a categoria for eletrônicos entre as data x e y” praticamente se traduzem palavra por palavra para um comando SQL real. É esse tipo de agilidade que torna o SQL indispensável mesmo em empresas que já têm um Power BI robusto ou um time de cientistas de dados trabalhando em Python: para a pergunta rápida do dia a dia, ir direto ao banco de dados com uma consulta continua sendo o caminho mais curto entre a dúvida e a resposta, principalmente quando é necessário confirmar uma informação que está sendo contestada em um relatório de BI ou quando essa informação não existe no relatório.

Imagine que são 9 horas da manhã e o gerente comercial envia uma mensagem: “As vendas de notebooks caíram quase 20% na última semana. Você consegue verificar o que aconteceu?”

Em vez de abrir o Power BI ou criar um script em Python, o analista normalmente acessa o banco de dados e começa uma investigação usando SQL. Em poucos minutos ele consegue comparar períodos, identificar quais produtos venderam menos, verificar se houve queda em uma região específica ou descobrir se algum item ficou sem estoque.

Pré-tratamento: o trabalho que acontece antes do Python e do BI

O segundo papel do SQL é menos visível, mas talvez ainda mais importante: preparar os dados antes que eles cheguem a outra ferramenta. Bancos de dados relacionais costumam guardar as informações espalhadas em várias tabelas, otimizadas para o funcionamento do sistema que as gerou — e não para facilitar a vida de quem quer analisá-las depois. Antes de qualquer gráfico ou modelo, alguém precisa juntar essas tabelas, filtrar o que não interessa, corrigir duplicidades e resumir os dados em um formato limpo.

É esse trabalho de organização que o SQL faz com muito mais eficiência do que Python rodando na memória do computador ou uma planilha tentando abrir milhões de linhas. Quando um analista escreve uma consulta que junta a tabela de vendas com a de clientes, filtra apenas o período desejado e já calcula totais por categoria, ele está entregando para a etapa seguinte — seja um notebook Python, seja um painel de BI — uma base muito mais enxuta e pronta para uso, em vez de forçar essas ferramentas a lidar com o volume bruto e a bagunça dos dados originais.

Na prática, esse é o motivo pelo qual analistas que usam Python quase sempre começam o script conectando a um banco e rodando uma consulta SQL para trazer só os dados necessários, em vez de carregar tabelas inteiras para depois filtrar dentro do próprio Python. E é também o motivo pelo qual, quando você conecta o Power BI ou o Tableau diretamente a um banco de dados, a ferramenta está por trás dos panos gerando e executando consultas SQL para buscar exatamente as informações que aparecem no seu gráfico — mesmo que o analista nunca escreva uma linha de código ali dentro.

Os comandos que realmente fazem o trabalho pesado

Na prática, quase toda análise em SQL gira em torno de um punhado de ideias centrais, usadas em conjunto conforme a pergunta que se quer responder.

Tudo começa com o comando SELECT, que define quais colunas você quer ver, combinado com WHERE, que filtra as linhas que interessam — por exemplo, apenas vendas acima de um determinado valor, ou clientes de uma cidade específica. É o par mais básico e também o mais usado no dia a dia, porque a maioria das perguntas de negócio começa como um recorte: “quero ver só isso, dentro dessas condições”.

Quando a pergunta envolve resumir informações — total de vendas por categoria, média de gasto por cliente, número de pedidos por mês — entra o GROUP BY, quase sempre acompanhado de funções como SUM, AVG, COUNT ou MAX. É esse conjunto que transforma centenas de milhares de linhas individuais em poucas linhas de resumo, prontas para virar um gráfico ou uma tabela dinâmica.

Para cruzar informações que estão espalhadas em tabelas diferentes — como uma tabela de vendas e outra de clientes — existe o JOIN. Ele funciona como uma ponte: diz ao banco de dados para juntar as duas tabelas usando uma coluna em comum, como o identificador do cliente, permitindo trazer o nome, a cidade ou qualquer outra informação do cliente para dentro da análise de vendas.

Quando a análise já resumida por GROUP BY ainda precisa de um filtro adicional — por exemplo, mostrar apenas as categorias que ultrapassaram uma certa receita total — usa-se o HAVING, que age como um WHERE que funciona depois do agrupamento.

Para organizar os resultados de forma legível, o ORDER BY ordena as linhas pela coluna que fizer mais sentido, do maior para o menor valor ou em ordem alfabética. E quando a análise envolve tempo — evolução mensal de receita, comparação entre trimestres — funções de data como DATE_TRUNC ou EXTRACT permitem agrupar registros por dia, mês ou ano, essenciais para qualquer análise de tendência.

Por fim, para análises um pouco mais sofisticadas, existem as chamadas funções de janela, como RANK e ROW_NUMBER, que permitem criar rankings sem perder o detalhe de cada linha original, e o WITH, que cria uma espécie de tabela temporária dentro da própria consulta, útil para organizar análises em etapas e deixar consultas complexas muito mais fáceis de ler e revisar depois.

Muita gente imagina que SQL é uma linguagem de programação complexa, mas ela foi criada justamente para permitir que consultas sejam escritas de forma próxima ao inglês. Depois de aprender alguns comandos como SELECT, WHERE, GROUP BY e JOIN, já é possível responder boa parte das perguntas do dia a dia de um analista.

O SQL não trabalha sobre arquivos CSV nem planilhas. Ele consulta bancos de dados relacionais como PostgreSQL, MySQL, SQL Server, Oracle e SQLite. É justamente por executar as consultas dentro do próprio banco que ele consegue lidar com milhões de registros de forma muito mais eficiente do que carregar todos os dados na memória de um computador.

O que você consegue fazer usando apenas SQL

Esses são só alguns exemplos.

  • descobrir os produtos mais vendidos;
  • calcular faturamento mensal;
  • identificar clientes que mais compram;
  • comparar vendas entre anos;
  • encontrar produtos sem estoque;
  • calcular ticket médio;
  • detectar vendas duplicadas;
  • construir conjuntos de dados para dashboards;
  • preparar dados para Machine Learning.

Vamos para alguns exemplos de script SQL

Imagine que você precisa responder a seguinte pergunta para seu chefe: Quais produtos estão vendendo menos que a média dos demais?

Aqui o SQL resolve um problema em duas etapas. Primeiro ele calcula quanto cada produto vendeu. Depois executa uma segunda consulta, escondida dentro da primeira (uma subconsulta), para descobrir a média de vendas de todos os produtos. Por fim, compara cada produto com essa média e retorna apenas aqueles que tiveram desempenho inferior. Perceba que estamos fazendo uma comparação estatística simples diretamente no banco de dados, sem precisar exportar os dados para Python.

Próximo exemplo: Quais clientes costumavam comprar produtos da categoria Informática, mas nos últimos três meses compraram apenas produtos da categoria Móveis?

Esse tipo de resposta dificilmente já estará disponível em um dashboard. É uma investigação específica.

Essa consulta identifica uma mudança de comportamento.

A consulta foi dividida em etapas usando a cláusula WITH, tornando o código mais organizado e fácil de entender. Primeiro, é criado um histórico contendo o cliente, a categoria do produto comprado e a data da compra. Em seguida, são identificados os clientes que compraram produtos da categoria Informática antes da data de referência. Depois, são selecionados os clientes que, nos últimos três meses, compraram exclusivamente produtos da categoria Móveis. Por fim, o operador INTERSECT encontra a interseção entre esses dois grupos, retornando apenas os clientes que atendem às duas condições.

Mais um exemplo de script para uma consulta ad-hoc: Quais pares de produtos aparecem com maior frequência na mesma venda?

Essa é uma análise que ajuda a responder perguntas como: Quem compra notebook também costuma comprar mouse? ou: Vale a pena colocar esses produtos próximos no local de vendas?

Essa consulta procura identificar pares de produtos que costumam ser comprados juntos. Para isso, a tabela vendas_itens é relacionada com ela mesma por meio do identificador da venda (venda_id), permitindo comparar todos os produtos pertencentes à mesma compra. A condição i1.produto_id < i2.produto_id evita que o mesmo par seja contado duas vezes e também impede que um produto seja comparado consigo mesmo. Em seguida, a consulta conta quantas vezes cada combinação de produtos aparece nas vendas, mantém apenas os pares que ocorreram pelo menos três vezes (HAVING COUNT(*) >= 3) e ordena o resultado pelos pares mais frequentes.

Recursos do SQL que ajudam a responder perguntas de negócio

Vou deixar aqui uma lista com recursos do SQL para análises ad-hoc que podem ajudar a solucionar problemas de negócios.

Recurso SQLPara que serveExemplo de uso
SELECTEscolher quais colunas serão retornadasMostrar nome e preço dos produtos
WHEREFiltrar apenas os registros desejadosVendas acima de R$ 1.000
ORDER BYOrdenar os resultadosProdutos mais vendidos primeiro
GROUP BYAgrupar registros para criar resumosFaturamento por categoria
HAVINGFiltrar resultados após um agrupamentoCategorias com mais de 100 vendas
JOINCombinar informações de várias tabelasRelacionar vendas e produtos
LEFT JOINEncontrar registros sem correspondênciaProdutos que nunca foram vendidos
COUNT()Contar registrosQuantidade de pedidos realizados
SUM()Somar valoresReceita total por mês
AVG()Calcular médiasTicket médio por cliente
MIN() / MAX()Encontrar menor ou maior valorProduto mais caro
DISTINCTRemover valores duplicadosClientes únicos que compraram
CASECriar regras condicionaisClassificar clientes por faixa de gasto
INComparar com uma lista de valoresVendas de lojas específicas
BETWEENFiltrar intervalosCompras entre duas datas
LIKEBuscar textos por padrãoClientes cujo nome começa com “A”
EXISTSVerificar existência de registros relacionadosClientes que já realizaram compras
UNIONUnir resultados de consultas diferentesConsolidar vendas de duas bases
INTERSECTEncontrar registros comuns entre consultasClientes presentes em dois grupos
WITH (CTE)Dividir consultas complexas em etapasOrganizar uma análise em múltiplas fases
SubconsultasUtilizar o resultado de uma consulta dentro de outraComparar um produto com a média de vendas
ROW_NUMBER()Numerar registrosTop 10 clientes
RANK()Criar rankingsRanking de vendedores por faturamento
DENSE_RANK()Ranking sem pular posiçõesRanking por categoria
LAG()Comparar com o registro anteriorComparar vendas com o mês anterior
LEAD()Comparar com o próximo registroAnalisar evolução temporal
OVER()Executar funções de janelaAcumulados, médias móveis e rankings

Embora o SQL possua dezenas de recursos, alguns se destacam na resolução de análises ad-hoc mais elaboradas. O JOIN permite combinar informações espalhadas em diferentes tabelas, as subconsultas possibilitam comparar dados com médias ou totais calculados dinamicamente, o WITH (CTE) organiza consultas longas em etapas mais legíveis, enquanto as funções de janela, como ROW_NUMBER(), RANK() e LAG(), tornam possível criar rankings, comparar períodos e calcular indicadores sem perder o detalhe dos registros originais.

O lugar do SQL na caixa de ferramentas

No fim das contas, a análise de dados profissional raramente depende de escolher entre SQL, Python e ferramentas de BI — depende de saber onde cada um entra. O SQL cuida da ponta mais próxima da fonte: responde perguntas rápidas direto no banco de dados e prepara, limpa e resume as informações antes que elas sigam para uma análise mais elaborada em Python ou para um dashboard interativo. Dominar bem essa etapa costuma tornar todo o resto do trabalho — o script em Python, o painel no Power BI — mais rápido e muito mais confiável, porque parte de dados que já chegaram organizados.

Ferramentas mudam. Frameworks aparecem e desaparecem. Mas, há mais de quatro décadas, o SQL continua sendo a principal linguagem para consultar dados armazenados em bancos relacionais. Independentemente de você seguir carreira como analista de dados, engenheiro de dados, cientista de dados ou desenvolvedor, aprender SQL significa aprender a conversar diretamente com a principal fonte de informação das empresas: seus bancos de dados.

Quer se aprofundar em SQL?

Se você gostou deste artigo e deseja aprender SQL aplicado à análise de dados, este livro é uma excelente leitura para iniciantes e profissionais que desejam evoluir na carreira.

Este artigo contém links de afiliado. Se você comprar através deles, podemos receber uma pequena comissão, sem custo extra pra você.

Comentários (0)

Seja o primeiro a comentar.

Deixe um comentário

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