CommencezCommencez gratuitement

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

Voir le cours

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 JOIN du CTE avec la table league en utilisant country_id à partir du CTE match_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;
Modifier et exécuter le code