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:
- Subconsultas Escalares - Retorna um único valor (uma linha, uma coluna)
- Subconsultas de Linha - Retorna uma única linha com múltiplas colunas
- 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
Desafio
FácilTabelas 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:
- Primeiro, escreva uma subconsulta que calcula a média de todas as quantidades na loja:
SELECT AVG(quantity) FROM shop - 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:
- Subconsultas Escalares - Retorna um único valor (uma linha, uma coluna)
- Subconsultas de Linha - Retorna uma única linha com múltiplas colunas
- 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
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
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns