22nd Dec 2025 11 minutos de leitura Melhore suas consultas: 7 truques intermediários de SQL que todo analista deve conhecer Agnieszka Kozubek-Krycuń análise de dados Índice 1. Use CASE WHEN para colunas condicionais 2. Combine CASE WHEN com GROUP BY e SUM 3. Simplifique os resumos com ROLLUP 4. Lide com dados ausentes usando COALESCE e NULLIF 5. Domine a manipulação de data e hora 6. Use funções JSON para dados semiestruturados 7. Organize consultas com expressões de tabela comuns (CTEs) Continue aprimorando seus superpoderes de SQL O domínio do SQL não se limita a escrever consultas simples — ele começa quando você começa a transformar dados em insights. Aprenda sete truques intermediários de SQL que todo analista deve saber para analisar de forma mais inteligente, trabalhar mais rápido e descobrir padrões que suas consultas básicas não conseguem mostrar. Se você já sabe usar SELECT, JOIN e WHERE, é hora de dar um passo adiante. O SQL não termina em SELECT — se você deseja se tornar um analista de dados profissional, precisa ir além do básico e começar a pensar como alguém que transforma dados em respostas. O SQL intermediário é onde a análise se torna interessante — quando você para de extrair dados brutos e começa a construir insights que realmente impulsionam as decisões de negócios. Neste artigo, abordaremos sete truques de SQL de nível intermediário que ajudarão qualquer analista de dados a trabalhar de forma mais inteligente e rápida. Essas técnicas são habilidades práticas e reais que tornarão suas consultas mais poderosas, eficientes e prontas para análises avançadas. Na LearnSQL.com.br, nosso curso de SQL para análise de dados ajuda você a passar da escrita de consultas básicas para a compreensão dos dados em um nível mais profundo. Abaixo estão sete truques de SQL que todo analista de dados deve dominar para tornar suas consultas mais rápidas, limpas e perspicazes. 1. Use CASE WHEN para colunas condicionais Muitas vezes, os analistas precisam criar suas próprias categorias — por exemplo, separar clientes VIP dos clientes regulares ou rotular transações como de valor “alto” ou “baixo”. Embora os filtros mostrem os grupos existentes, às vezes você precisa definir os seus próprios. É aí que o CASE WHEN ajuda. É uma expressão SQL padrão que funciona como uma instrução IF, permitindo que você crie lógica condicional diretamente em suas consultas para segmentar dados ou aplicar regras de negócios dinamicamente. Exemplo: SELECT customer_id, total_spent, CASE WHEN total_spent > 1000 THEN 'VIP' WHEN total_spent BETWEEN 500 AND 1000 THEN 'Regular' ELSE 'New' END AS customer_segment FROM customers; Veja o que acontece nesta consulta. Ela começa selecionando o ID e o gasto total de cada cliente na tabela de clientes. Em seguida, a CASE expressão percorre cada linha, verificando o valor de total_spent em ordem. Se um cliente gastou mais de 1000, o SQL atribui a ele o rótulo 'VIP'. Caso contrário, ele passa para a próxima condição — os clientes que gastaram entre 500 e 1000 recebem o rótulo 'Regular'. Todos os outros se enquadram na 'New' definida pela ELSE . A CASE expressão para assim que encontra a primeira condição verdadeira, garantindo que cada cliente receba exatamente uma categoria. A saída final inclui uma nova coluna, customer_segment, que reflete o rótulo determinado por essas regras. Essa abordagem permite incorporar uma lógica de negócios simples diretamente no seu SQL, tornando seus relatórios ou painéis imediatamente mais perspicazes, sem limpeza de dados extra ou classificação manual. Você pode ler mais sobre CASE expressão em nosso artigo SQL CASE WHEN explicado: 10 exemplos fáceis para iniciantes 2. Combine CASE WHEN com GROUP BY e SUM Às vezes, você precisa criar suas próprias métricas de resumo — por exemplo, contando quantos pedidos de alto valor, médio valor e baixo valor cada região gera. O agrupamento padrão só pode resumir colunas existentes, mas a análise de negócios geralmente requer definições personalizadas. É aí que entra a combinação de CASE WHEN com GROUP BY e funções agregadas como SUM ou COUNT se torna poderosa. Ela permite calcular várias estatísticas baseadas em condições em uma única consulta — uma maneira clara de transformar dados brutos em insights comerciais significativos. Exemplo: SELECT region, SUM(CASE WHEN total_amount > 1000 THEN 1 ELSE 0 END) AS high_value_orders, SUM(CASE WHEN total_amount BETWEEN 500 AND 1000 THEN 1 ELSE 0 END) AS mid_value_orders, SUM(CASE WHEN total_amount < 500 THEN 1 ELSE 0 END) AS low_value_orders FROM orders GROUP BY region; Esta consulta agrupa pedidos por região e conta quantos se enquadram em diferentes categorias de valor. Para cada pedido, a CASE expressão verifica o total_amount e retorna 1 se a condição for verdadeira ou 0 se não for. A SUM então soma os valores para produzir totais para cada categoria dentro de uma região. Esse padrão é útil para comparar o desempenho dos negócios — por exemplo, identificar quais regiões geram mais transações de alto valor ou rastrear como os tamanhos dos pedidos diferem entre os mercados. Em vez de escrever várias consultas, você pode resumir tudo em uma única exibição usando CASE WHEN com GROUP BY. Você pode aprender a trabalhar com CASE, COUNT, SUMe GROUP BY em nosso curso de nível intermediário Como Criar Relatórios Básicos em SQL. 3. Simplifique os resumos com ROLLUP Ao analisar dados ao longo do tempo — como vendas por mês e ano —, muitas vezes você precisa de vários níveis de agregação: totais mensais, totais anuais e um total geral. Normalmente, isso exigiria várias consultas ou instruções UNION declarações. ROLLUP resolve esse problema de maneira elegante. Ele se estende GROUP BY para incluir subtotais e totais gerais automaticamente, tornando-o ideal para relatórios financeiros, painéis ou resumos executivos. Exemplo: SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, SUM(total_amount) AS total_sales FROM orders GROUP BY ROLLUP( EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date)) ORDER BY year, month; Resultado: yearmonthtotal_sales 2023185,000 2023290,500 2023NULL175,500 2024192,000 2024295,300 2024NULL187,300 NULLNULL362,800 Aqui, ROLLUP(year, month) diz ao SQL para agrupar os dados primeiro por ano e mês, depois adicionar uma linha extra resumindo cada ano e, finalmente, outra linha mostrando o total geral de todos os anos. Sempre que você vir NULL no resultado, é um subtotal ou nível total gerado automaticamente por ROLLUP. Isso facilita a preparação de resumos baseados em tempo em uma única consulta — por exemplo: Relatórios de vendas mensais e anuais. Visitas ao site por dia, mês e total. Acompanhamento de despesas por departamento com totais para toda a empresa. Resumindo, ROLLUP é uma maneira rápida e confiável de produzir resumos hierárquicos diretamente em SQL — sem a necessidade de fórmulas de planilha ou agregação manual. Você pode saber mais sobre ROLLUP e outras GROUP BY extensões em nosso curso de nível Comandos GROUP BY em SQLintermediário. 4. Lide com dados ausentes usando COALESCE e NULLIF O exemplo ROLLUP mostra um problema comum: as linhas de subtotal usam NULL para representar níveis de agrupamento ausentes, o que pode tornar os resultados mais difíceis de ler. De maneira mais geral, NULL os valores nos dados muitas vezes causam confusão — células em branco nos relatórios, texto ausente nos painéis ou cálculos incompletos nos agregados. Todo analista de dados deve saber como lidar NULLde forma eficaz, pois valores ausentes não gerenciados podem levar a conclusões erradas ou consultas com falha. Felizmente, o SQL fornece ferramentas simples para tornar esses valores mais significativos e fáceis de trabalhar: COALESCE e NULLIF. Usando COALESCE: substitua NULL por valores legíveis COALESCE retorna o primeiro valor nãoNULL de uma lista, permitindo substituir o NULL rótulo por algo mais significativo. Exemplo: SELECT COALESCE(region, 'Total') AS region_label, SUM(total_amount) AS total_sales FROM orders GROUP BY ROLLUP(region); Resultado: regiontotal_sales East85,000 West92,300 Total177,300 Aqui, COALESCE(region, 'Total') substitui o NULL da linha do subtotal com um rótulo legível. Você pode usá-lo da mesma maneira para preencher números ausentes (COALESCE(discount, 0)) ou valores de texto (COALESCE(name, 'Unknown')). Usando NULLIF: Evite erros de divisão por zero NULLIF faz o oposto — converte um valor específico em NULL. Seu uso mais prático é evitar a divisão por zero nos cálculos. Exemplo: SELECT product_id, sales, returns, sales / NULLIF(returns, 0) AS sales_to_returns_ratio FROM product_stats; Se retornar igual a zero, NULLIF(returns, 0) retorna NULL, impedindo que o SQL gere um erro de divisão por zero. Ao dominar COALESCE e NULLIF, os analistas podem tornar suas consultas mais confiáveis e legíveis — garantindo que dados ausentes nunca atrapalhem insights precisos. 5. Domine a manipulação de data e hora As datas estão no centro de quase todas as análises — acompanhando a receita mensal, a retenção semanal, a rotatividade trimestral ou o crescimento anual. Mas os carimbos de data/hora brutos raramente estão no formato que você precisa. Para obter insights significativos, muitas vezes é necessário extrair partes de uma data, calcular intervalos de tempo ou ajustar fusos horários. Um analista de dados deve saber como: classificar registros cronologicamente, extrair partes específicas de uma data ou hora (ano, mês, dia, hora, minuto), adicionar ou subtrair intervalos de tempo, formatar datas para relatórios, converter entre fusos horários e lidar com conversões entre tipos de data e string ou carimbo de data/hora. O SQL fornece funções para todas essas operações. Exemplo: SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, COUNT(order_id) AS orders FROM orders GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date) ORDER BY year, month; Esta consulta agrupa todos os pedidos por ano e mês para contar quantos foram feitos em cada período. EXTRACT extrai partes de uma data — neste caso, o ano e o mês de order_date. O GROUP BY usa esses valores extraídos para agregar dados por período de tempo, e ORDER BY garante que os resultados apareçam em ordem cronológica. Depois de entender como extrair e manipular partes da data, você pode expandir facilmente sua análise — comparar o crescimento mês a mês, medir intervalos médios de pedidos ou calcular janelas de retenção. Essas habilidades permitem transformar registros de data e hora em insights que refletem ciclos de negócios reais. (Obtenha nossa Folha de Referência de SQL para Análise de Dados para ver essas funções em um só lugar.) 6. Use funções JSON para dados semiestruturados Atualmente, cada vez mais dados comerciais vêm de APIs REST — serviços da web que retornam informações no formato JSON (JavaScript Object Notation). JSON é uma maneira leve e semiestruturada de armazenar dados usando pares de chave-valor, matrizes e objetos aninhados. Por exemplo, uma API pode retornar isto: {"user_id": 42, "device": "mobile", "location": {"country": "US", "city": "Boston"}} Esse tipo de dado é flexível, mas não se encaixa perfeitamente em tabelas SQL padrão. Uma única coluna pode conter um objeto JSON inteiro, tornando impossível usar operadores SQL tradicionais como = ou LIKE para extrair valores. É por isso que os bancos de dados modernos incluem funções JSON, como JSON_EXTRACT() no MySQL ou JSON_VALUE() no SQL Server. Elas permitem consultar, filtrar e agregar dados semiestruturados diretamente. Exemplo: SELECT JSON_EXTRACT(user_data, '$.device') AS device_type, COUNT(*) AS users FROM events GROUP BY device_type; Aqui, a coluna user_data armazena objetos JSON que descrevem as sessões dos usuários. A função JSON_EXTRACT(user_data, '$.device') recupera o valor da device chave (como 'mobile' ou 'desktop') para cada linha. A consulta então agrupa os resultados por tipo de dispositivo e conta quantos usuários pertencem a cada categoria. Ser capaz de trabalhar com JSON significa que você pode analisar dados de sistemas modernos — respostas de API, logs de aplicativos ou eventos de rastreamento — sem precisar reformulá-los primeiro. É uma habilidade essencial para analistas que lidam com dados que não são totalmente estruturados, mas ainda assim repletos de insights valiosos. 7. Organize consultas com expressões de tabela comuns (CTEs) À medida que suas habilidades em SQL aumentam, suas consultas naturalmente ficam mais longas — várias junções, filtros e agregações em uma única instrução. Isso é ótimo para análise, mas difícil de ler e manter. As expressões de tabela comuns (CTEs) tornam as consultas complexas mais claras e fáceis de gerenciar. Elas permitem definir um conjunto de resultados temporário e nomeado que você pode referenciar na mesma consulta. Pense em uma CTE como uma subconsulta reutilizável com um nome. As CTEs são especialmente úteis quando: você precisa dividir uma análise de várias etapas em partes lógicas, o mesmo cálculo é usado mais de uma vez ou você deseja depurar e testar seções de uma consulta maior separadamente. Exemplo: WITH monthly_sales AS ( SELECT EXTRACT(YEAR FROM order_date) AS year, EXTRACT(MONTH FROM order_date) AS month, SUM(amount) AS total_sales FROM orders GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date) ) SELECT year, month, total_sales FROM monthly_sales WHERE total_sales > 50000 ORDER BY year, month; Aqui, o CTE chamado monthly_sales calcula o total de vendas por mês e ano. Ele funciona como uma tabela temporária que existe apenas durante a duração da consulta. A consulta externa filtra esse resultado para mostrar apenas os meses em que as vendas excederam 50.000. Essa estrutura melhora a legibilidade e facilita a extensão da consulta — por exemplo, você poderia unir monthly_sales com uma tabela de metas ou calcular taxas de crescimento sem reescrever a lógica de agregação. Os CTEs são uma ferramenta essencial para analistas que escrevem relatórios em camadas, baseados em dados, ou precisam manter SQL complexo organizado e sustentável. Você pode aprender mais sobre Expressões de Tabela Comum em nosso curso Consultas Recursivasavançado. Continue aprimorando seus superpoderes de SQL Cada uma dessas técnicas ajuda você a escrever consultas mais inteligentes e flexíveis — do tipo que economizam tempo e impressionam as equipes. Se você está pronto para ir além do básico e desenvolver habilidades analíticas reais, explore o SQL para análise de dados. Ele abrange tudo, desde relatórios intermediários até avançados, tudo com prática hands-on. Quer ter acesso total a todos os cursos que oferecemos? O Pacote Ilimitado Vitalício SQL oferece acesso vitalício a todos os cursos LearnSQL.com.br e trilhas atuais e futuros — o melhor custo-benefício e um único pagamento que compensa para toda a sua carreira. Continue aprendendo, continue consultando e continue evoluindo. Tags: análise de dados