CTE avec sous-requêtes imbriquées
Si vous vous retrouvez à énumérer plusieurs sous-requêtes dans la clause FROM avec des instructions imbriquées, votre requête risque de devenir longue, complexe et difficile à lire.
Comme bien des requêtes sont écrites pour être enregistrées et réexécutées plus tard, une bonne organisation est essentielle pour un flux de travail sans accroc. Réorganiser les sous-requêtes en CTE vous fera gagner du temps, de l'espace et vous évitera bien des confusions à long terme!
Cette activité fait partie du cours
Manipulation de données en SQL
Instructions de l’exercice
- Déclarez un CTE qui calcule le nombre de buts total pour les matchs d'août de la saison
'2013/2014'. - Filtrez la liste dans la sous-requête interne pour ne sélectionner que les matchs d'août de la saison
'2013/2014'. - Faites un
LEFT JOINdu CTE avec la table league en utilisantcountry_idà partir du CTEmatch_list.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
-- Set up your CTE
___ match_list ___ (
SELECT
country_id,
(home_goal + away_goal) AS goals
FROM match
-- Create a list of match IDs to filter data in the CTE
WHERE id IN (
SELECT ___
FROM ___
WHERE season = ___ AND EXTRACT(MONTH FROM ___) = ___))
-- Select the league name and average of goals in the CTE
SELECT
___,
___(___)
FROM league AS l
-- Join the CTE onto the league table using country_id
LEFT JOIN ___ ON l.id = match_list.___
GROUP BY l.name;