Menu
Coddy logo textTech

Subqueries Part 2

Parte da seção Fundamentos do Journey de SQL da Coddy — lição 39 de 72.

Existem três tipos principais de subconsultas:

  1. Subconsultas Escalares - Retorna um único valor (uma linha, uma coluna)
  2. Subconsultas de Linha - Retorna uma única linha com múltiplas colunas
  3. Subconsultas de Tabela - Retorna múltiplas linhas e colunas

Por exemplo, aqui estão alguns casos de uso para cada tipo de subconsulta:

Subconsulta Escalar - Encontre funcionários que ganham mais do que o salário médio:

SELECT name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

Subconsulta de Linha - Encontre o(s) funcionário(s) com o mesmo departamento e salário de Alice

SELECT name
FROM employees
WHERE (department, salary) = (
    SELECT department, salary
    FROM employees
    WHERE name = 'Alice'
);

Subconsultas de Tabela - Mostrar departamentos e a contagem de funcionários

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

Observe os casos de uso:

  • Scalar - Comparações simples (>, <, =)
  • Quando você precisar corresponder a múltiplas colunas
  • Quando você precisar consultar a partir de um conjunto de resultados
challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • shop: price, quantity, category, list_date

Encontre categorias onde a quantidade total é maior que a média de todas as quantidades na loja.

Importante: Você deve usar uma subconsulta dentro da cláusula HAVING para calcular a média. Não use um valor fixo ou uma consulta separada — a subconsulta deve calcular AVG(quantity) da tabela shop diretamente dentro de HAVING.

Passos para resolver:

  1. Primeiro, escreva uma subconsulta que calcula a média de todas as quantidades na loja: SELECT AVG(quantity) FROM shop
  2. Em seguida, para cada categoria, some as quantidades e compare com esta subconsulta usando a palavra-chave HAVING

Folha de consulta

Existem três tipos principais de subconsultas:

  1. Subconsultas Escalares - Retorna um único valor (uma linha, uma coluna)
  2. Subconsultas de Linha - Retorna uma única linha com múltiplas colunas
  3. Subconsultas de Tabela - Retorna múltiplas linhas e colunas

Subconsulta Escalar - Comparações simples (>, <, =):

SELECT name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

Subconsulta de Linha - Corresponde a múltiplas colunas:

SELECT name
FROM employees
WHERE (department, salary) = (
    SELECT department, salary
    FROM employees
    WHERE name = 'Alice'
);

Subconsulta de Tabela - Consulta a partir de um conjunto de resultados:

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

Experimente você mesmo

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos