Simplifier les requêtes, mot-clé WITH
Fait partie de la section Les fondamentaux du Journey SQL de Coddy. Leçon 49 sur 72.
Les requêtes peuvent devenir trop complexes lorsqu’on y ajoute de nombreuses requêtes internes. Voici, par exemple, une requête qui comporte 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 simplifier, 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 :
devices_specs:device_id,width,height,num_features,opiniondevices_score:device_id,score
écris une requête qui :
- Identifie d’abord les « appareils grands » (les appareils dont la
widthest supérieure à 200) - Calcule ensuite la note moyenne de ces appareils grands. Nomme cette colonne
average_score
Utilise 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
1Introduction
IntroductionQu’est-ce qu’une base de donnéesConcepts des bases de donnéesValeurs uniques4D’autres mots-clés
Le mot-clé INLe mot-clé BETWEENLe mot-clé LIKELe mot-clé ASRécapitulatif - Modèles de téléphones portables2Conditions
Bases des conditionsLe mot-clé ANDLe mot-clé ORLe mot-clé NOTCombinaison de plusieurs conditionsParenthèsesBooléens5Opérations arithmétiques
Opérateurs mathématiquesColonnes mathématiquesL’opération moduloLa fonction ROUND()3Format de retour spécifique
Valeurs NULLTrier les résultats, partie 1Trier les résultats, partie 2Récapitulatif - Entreprise de cybersécuritéLimiter le nombre d’enregistrementsRécapitulatif - Usine de véhicules6Défis d’introduction
Récapitulatif - Élection parlementaireRécapitulatif - Arrestation criminelle par la policeRécapitulatif - Récipient de boisson au barRécapitulatif - Ingénieur de nouvelles colonnes9Tables multiples
Jointure de base, partie 1Jointure de base, partie 2Récapitulatif - JointureAuto-jointureRécapitulatif - Auto-jointureUnionSimplifier les requêtes, mot-clé WITHRécapitulatif - Requêtes WITHRécapitulatif - Entrepreneur immobilier12Fonctions de fenêtre – partie 2
Fonctions RANK & DENSE_RANKRécapitulatif – RANK & DENSE_RANKFonction NTILEFonctions d’agrégationCritère ROWS & RANGEEntraînez-vous par vous-même : Playground SQL