Simplify queries, WITH keyword
Fait partie de la section Les fondamentaux du Journey SQL de Coddy. Leçon 49 sur 72.
Les requêtes peuvent devenir très brouillonnes lorsqu'on ajoute de nombreuses sous-requêtes. Par exemple, voici une requête qui contient de nombreuses sous-requêtes :
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
)
)Pour faciliter les choses, nous pouvons utiliser le mot-clé WITH query_name AS (...). Il nous permet d'enregistrer une requête sous un nom et de l'utiliser où nous le souhaitons :
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)Ici, nous avons réutilisé query1 dans query2 et dans la requête principale.
Défi
FacileTables et colonnes disponibles :
<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>
Écrivez une requête qui :
- Identifie d'abord les "large devices" (appareils avec une valeur de
widthsupérieure à 200) - Calcule ensuite le score moyen pour ces appareils. Nommez cette colonne
average_score
Utilisez la clause WITH pour résoudre ce problème.
Essayez vous-même
-- Étape 1 : nommez un ensemble de résultats temporaire qui ne conserve que les appareils qui vous intéressent
WITH large_devices AS (
SELECT ____
FROM devices_specs
WHERE ____
)
-- Étape 2 : réutilisez cet ensemble de résultats temporaire dans la requête principale
SELECT ____ AS average_score
FROM devices_score
WHERE device_id IN (____);Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les fondamentaux
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 ContractorEntraînez-vous par vous-même : Playground SQL