Simplify queries, WITH keyword
Parte da seção Fundamentos do Journey de SQL da Coddy. Lição 49 de 72.
As consultas podem ficar muito confusas ao adicionar muitas consultas internas. Por exemplo, aqui está uma consulta que possui muitas subconsultas:
SELECT * FROM table1
WHERE col2 IN (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
)
)Para facilitar, podemos usar a palavra-chave WITH query_name AS (...). Ela nos permite salvar uma consulta com um nome e usá-la onde quisermos:
WITH query1 AS (
SELECT col5 FROM table3
WHERE col1 AND col3 OR col2
), query2 AS (
SELECT col1 FROM table2
WHERE col3 + col2 > 3 AND col5 LIKE '%test%' AND col6 IN query1
)
SELECT * FROM table1
WHERE col2 IN (SELECT col1 FROM query2) AND col4 IN (SELECT col5 FROM query1)Aqui nós reutilizamos a query1 na query2 e na consulta principal (main).
Desafio
FácilTabelas e colunas disponíveis:
<strong>devices_specs</strong>:<strong>device_id</strong>,<strong>width</strong>,<strong>height</strong>,<strong>num_features</strong>,<strong>opinion</strong><strong>devices_score</strong>:<strong>device_id</strong>,<strong>score</strong>
escreva uma consulta que:
- Primeiro identifique os "dispositivos grandes" (dispositivos com
widthmaior que 200) - Em seguida, calcule a média de pontuação para esses dispositivos grandes. Nomeie esta coluna como
average_score
Use a cláusula WITH para resolver este problema.
Experimente você mesmo
-- Passo 1: nomeie um conjunto de resultados temporário que mantém apenas os dispositivos que você se importa
WITH large_devices AS (
SELECT ____
FROM devices_specs
WHERE ____
)
-- Passo 2: reutilize esse conjunto de resultados temporário dentro da consulta principal
SELECT ____ AS average_score
FROM devices_score
WHERE device_id IN (____);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 columns9Multiple tables
Basic Join Part 1Basic Join Part 2Recap - JoinSelf joinRecap - Self JoinUnionSimplify queries, WITH keywordRecap - With QueriesRecap - Real Estate ContractorPratique por conta própria: Playground de SQL