CommencerCommencer 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.

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

Afficher le cours

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;
Modifier et exécuter le code