Conception de sous-requêtes dans FROM
Dans l’exercice précédent, vous avez constaté que l’Angleterre, les Pays-Bas, l’Allemagne et l’Espagne étaient les seuls pays dont la base de données contenait des matchs au cours desquels 10 buts au moins avaient été marqués. Analysons plus en détail ces matchs : quand ils ont été joués, au cours de quelles saisons et combien de buts ont été marqués à domicile par rapport à ceux marqués à l’extérieur.
Vous remarquerez que, dans cet exercice, l’alias de table est exclu pour chaque colonne sélectionnée dans la requête principale. En effet, la requête principale extrait des données de la sous-requête qui est traitée comme une table unique.
Cet exercice fait partie du cours
Manipulation de données en SQL
Instructions
- Complétez la sous-requête à l’intérieur de la clause
FROM
. Sélectionnez le nom du pays dans la table des pays, ainsi que les colonnes des dates, des buts à domicile, des buts à l’extérieur et du total des buts dans la table des matchs. - Créez une colonne dans la sous-requête qui additionne les buts à domicile et à l’extérieur, et nommez-la
total_goals
. Elle sera utilisée pour filtrer la requête principale. - Sélectionnez le pays, la date, les buts à domicile et les buts à l’extérieur dans la requête principale.
- Filtrez la requête principale pour les matchs ayant un total d’au moins 10 buts.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
SELECT
-- Select country, date, home, and away goals from the subquery
___,
date,
___,
away_goal
FROM
-- Select country name, date, home_goal, away_goal, and total goals in the subquery
(SELECT ___ AS country,
m.date,
___,
m.away_goal,
(___ + m.away_goal) AS total_goals
FROM match AS m
LEFT JOIN country AS c
ON m.country_id = c.id) AS subq
-- Filter by total goals scored in the main query
WHERE total_goals ___ ___;