3 Tipos de Subqueries no SQL – Escalar, Lista e Tabela
Conheça três tipos de subqueries no SQL que vão te ajudar nos seus próximos projetos e análises de dados.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Tipos de Subqueries no SQL – Escalar, Lista e Tabela
Na aula de hoje, vou te apresentar três tipos de subqueries no SQL que serão úteis em seus projetos: a subquery escalar e a subquery do tipo lista.
Primeiro, vou explicar o que são subqueries e, em seguida, mostrar como utilizar uma subquery escalar e uma subquery de lista.
Dessa forma, você poderá usar essas consultas para aprimorar ainda mais suas análises e projetos com bancos de dados, utilizando resultados de consultas anteriores dentro de novas consultas.
Isso facilita e agiliza seus processos, pois assim você não precisará refazer cálculos ou análises feitas anteriormente.
Curtiu esse tema? Quer aprender mais sobre os tipos de subqueries no SQL? Então vem comigo que eu vou te mostrar!
O que é uma Subquery?
Uma subquery é um recurso dentro do SQL que permite utilizar uma consulta dentro de outra.
Utilizando o resultado obtido com uma query como parte de outra query, você pode criar consultas mais otimizadas e práticas, agilizando seus processos de análise ao evitar a repetição de cálculos ou consultas já realizados.
Caso queira saber mais sobre como otimizar consultas no SQL utilizando subqueries, confira esta aula abaixo.
Nessa aula, vou te mostrar três tipos diferentes de subqueries que você pode aplicar em seus projetos: a escalar, a do tipo lista e do tipo tabela.
Subquery Escalar
Começando pela subquery escalar, essa consulta retorna exatamente um único valor (escalar). Esse valor pode ser utilizado em qualquer lugar da sua consulta onde um valor único é permitido.
Vamos ver isso com um exemplo prático. Dentro do meu banco de dados, tenho diversas tabelas com informações sobre produtos, vendas, lojas, clientes, etc. O objetivo será descobrir quais produtos têm um preço acima da média.
Para saber quais produtos têm o preço acima da média, precisamos primeiro calcular a média desses produtos. Podemos obter essa informação a partir da tabela produtos. Vamos começar selecionando e visualizando essa tabela.
SELECT * FROM produtos;
A informação que desejamos obter é referente à média do preço unitário de cada produto. Para isso, podemos utilizar a função AVG passando como parâmetro a coluna preco_unit. Essa função retorna a média dos valores numéricos contidos nessa coluna.
SELECT AVG(preco_unit) FROM produtos;
Essa consulta retornará um único valor, o da média, que nesse caso é de 1788.1250.
Para exibir apenas os produtos com valores acima da média, poderíamos utilizar a cláusula WHERE para filtrar a coluna preco_unit dentro da nossa tabela onde o valor é maior ou igual a 1788.
Porém, dessa forma, se a média dos valores da nossa tabela fosse alterada, novos produtos fossem adicionados, ou alguns produtos fossem removidos, essa consulta ficaria desatualizada.
Com isso, precisaríamos realizar novamente a consulta para verificar a média e depois alterar a consulta para filtrar apenas os produtos acima dela.
Nesse caso, uma maneira mais eficiente e prática de realizar essa consulta é utilizando a subconsulta (subquery) da média como condição da cláusula WHERE dentro da consulta principal, onde queremos filtrar os produtos acima da média.
SELECT *
FROM produtos
WHERE preco_unit >= (SELECT AVG(preco_unit) FROM produtos);
Nesse caso, temos uma subquery escalar sendo utilizada como condição da cláusula WHERE e filtrando apenas os produtos acima da média.
Subquery de Lista
Além da subquery escalar, que retorna um único valor, temos também as subqueries do tipo lista, que retornam um conjunto de valores. Esse conjunto pode ser utilizado em cláusulas como IN, ANY ou ALL, por exemplo.
Vamos ver isso na prática com este segundo exemplo. Nosso objetivo será determinar quais vendas estão associadas a clientes do gênero masculino.
Se analisarmos a nossa tabela de vendas, veremos que não é possível identificar o gênero dos clientes apenas por essa tabela.
SELECT * FROM vendas;
Uma das formas de resolver isso seria trabalhar com essa consulta utilizando os JOINs. Mas, neste caso, faremos isso utilizando subqueries.
Para resolver isso, vamos usar a coluna com o ID do cliente para buscar informações adicionais na tabela de clientes, já que essas tabelas estão relacionadas.

Para filtrar os IDs dos clientes do sexo masculino dentro da tabela de clientes, podemos selecionar a coluna id_cliente e utilizar a cláusula WHERE, especificando como condição que a coluna gênero tenha o valor ‘M’ (masculino).
SELECT id_cliente FROM clientes WHERE gênero = 'M';
Como resultado, temos uma lista, uma tabela de uma única coluna, com os IDs dos clientes do sexo masculino.
Agora, basta utilizarmos o operador IN para filtrar os valores da nossa tabela de vendas onde id_cliente for igual a um dos valores presentes na lista obtida com a nossa consulta anterior.
SELECT *
FROM vendas
WHERE id_cliente IN (SELECT id_cliente FROM clientes WHERE gênero = 'M');
Dessa forma, utilizamos a subquery de lista para filtrar as informações desejadas dentro da nossa outra consulta.
Aplicação Especial de Subqueries – Subquery do Tipo Tabela
Além das subqueries escalares e de lista, temos as subqueries que retornam uma tabela completa, com várias colunas e linhas, permitindo a extração de diversos dados importantes em uma única consulta.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Esse tipo de subquery pode ser usado como uma tabela temporária dentro de uma consulta maior, permitindo a realização de operações mais complexas e detalhadas.
Vamos entender isso com um exemplo prático. Suponha que você deseja analisar as vendas de produtos em sua base de dados, identificando o máximo, o mínimo e a média de vendas por produto. Para isso, podemos utilizar uma subquery de tabela.
Primeiro, a subquery interna agrupa (GROUP BY) as vendas por produto, utilizando o id_produto, e calcula o total de vendas para cada um, fazendo a contagem com a função COUNT().
O resultado dessa consulta interna será uma tabela com duas colunas: id_produto e total_vendas, onde cada linha representa um produto e o total de vendas associado a ele.
SELECT
id_produto,
COUNT(*) AS total_vendas
FROM
vendas
GROUP BY id_produto;
A partir dessa tabela, construiremos a nossa subquery externa, onde usaremos esses dados para calcular o máximo (MAX), o mínimo (MIN) e a média (AVG) das vendas, a partir da coluna total_vendas, gerada na consulta interna.
Para que o SQL reconheça a consulta interna como uma tabela, precisamos defini-la entre parênteses e atribuir a ela um alias. Nesse caso, vou chamá-la de t, mas você pode nomeá-la de forma que faça mais sentido para a sua consulta.
SELECT
MAX(total_vendas) AS maximo_vendas,
MIN(total_vendas) AS minimo_vendas,
AVG(total_vendas) AS media_vendas
FROM (
SELECT
id_produto,
COUNT(*) AS total_vendas
FROM vendas
GROUP BY id_produto
) AS t;Isso nos permite extrair informações agregadas importantes a partir dos dados agrupados, possibilitando que, em uma única consulta, obtenhamos três informações essenciais para a análise de dados.

Dessa forma, a subquery de tabela é utilizada para realizar uma análise mais complexa, onde os resultados intermediários (neste caso, os totais de vendas por produto) são essenciais para o cálculo final de máximo, mínimo e média.
Essa é uma aplicação especial de subqueries que permite construir consultas SQL mais avançadas, extraindo diversas informações de maneira rápida e flexível.
Conclusão – Tipos de Subqueries no SQL – Escalar, Lista e Tabela
Nessa aula, você aprendeu como utilizar três tipos de subqueries no SQL que vão te ajudar em seus projetos e na construção de suas consultas: a subquery escalar, a subquery do tipo lista e a subquery do tipo tabela.
Você viu que a subquery escalar retorna um único valor e pode ser usada onde apenas um valor é esperado. Já a subquery de lista retorna um conjunto de valores e geralmente é usada com as cláusulas IN, ANY ou ALL.
Além disso, te mostrei como usar subqueries de maneira eficaz com as subqueries do tipo tabela, para otimizar consultas complexas e melhorar o desempenho de operações no banco de dados.
Essas subqueries são importantes e poderosas ferramentas que tornam suas consultas mais flexíveis, eficientes e práticas. Elas facilitam a manutenção e agilizam a execução de consultas mais complexas, tornando-as dinâmicas.
Caso queira aprender como aperfeiçoar ainda mais seus conhecimentos sobre consultas em SQL, otimizando seus códigos e se destacando no mercado de trabalho, confira nosso Curso Completo SQL Impressionador!
Hashtag Treinamentos
Para acessar outras publicações de SQL, clique aqui!
Posts mais recentes de SQL
- UPDATE em SQL: guia completo para usar o comando sem cometer errosUPDATE em SQL: entenda como atualizar dados com segurança, sintaxe, exemplos práticos e cuidados para evitar erros comuns.
- SQL DELETE: como usar o comando para excluir dados?SQL DELETE: entenda como excluir registros, usar a sintaxe correta e evitar erros ao remover dados de tabelas em bancos SQL.
- Guia completo para desenvolvedor SQL: o que faz, salário e como aprenderConheça as funções do desenvolvedor SQL, salários médios, como começar na área e como está o atual mercado de trabalho.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








