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.
Les requêtes étant généralement écrites dans le but d’être sauvegardées et exécutées à nouveau ultérieurement, il est essentiel d’adopter une bonne organisation pour que le flux de travail soit fluide. L’organisation des sous-requêtes sous forme de CTE vous fera gagner du temps, de l’espace et de la confusion à long terme !
Cet exercice fait partie du cours
Manipulation de données en SQL
Instructions
- Déclarez une CTE qui calcule le nombre total de buts des matches du mois d’août de la saison 2013/2014.
- Faites une jointure gauche entre la CTE et la table du classement du championnat en utilisant
country_id
à partir de la CTEmatch_list
. - Filtrez la liste dans la sous-requête intérieure pour ne sélectionner que les matchs du mois d’août de la saison 2013/2014.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
-- 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
LEFT JOIN ___ ON l.id = match_list.___
GROUP BY l.name;