CommencerCommencer gratuitement

Nettoyer avec les CTE

Au chapitre 2, vous avez généré une liste de pays et le nombre de matches dans chaque pays avec un total d’au moins 10 buts. La requête de cet exercice utilise une sous-requête dans l’instruction FROM afin de filtrer les matchs avant de les compter dans la requête principale. Vous trouverez ci-dessous la requête que vous avez créée :

SELECT

  c.name AS country,

  COUNT(sub.id) AS matches

FROM country AS c
INNER JOIN (

  SELECT country_id, id 

  FROM match

  WHERE (home_goal + away_goal) >= 10) AS sub

ON c.id = sub.country_id
GROUP BY country;

Vous pouvez répertorier une (ou plusieurs) sous-requêtes en tant qu’expressions de table communes en les déclarant avant votre requête principale, ce qui constitue un excellent outil pour organiser les informations et les classer de manière logique.

Dans cet exercice, nous allons réécrire une requête similaire en utilisant une CTE.

Cet exercice fait partie du cours

Manipulation de données en SQL

Afficher le cours

Instructions

  • Complétez la syntaxe pour déclarer votre CTE.
  • Effectuez la correspondance entre country_id et id de la table match dans votre CTE.
  • Faites une jointure gauche entre la CTE et la table du championnat à l’aide de country_id.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

-- Set up your CTE
___ match_list ___ (
    SELECT 
  		country_id, 
  		___
    FROM match
    WHERE (home_goal + away_goal) >= 10)
-- Select league and count of matches from the CTE
SELECT
    l.name AS league,
    COUNT(match_list.id) AS matches
FROM league AS l
-- Join the CTE to the league table
LEFT JOIN ___ ON l.id = ___
GROUP BY l.name;
Modifier et exécuter le code