CommencezCommencez gratuitement

Utiliser CASE et AVG pour obtenir des fractions

Les instructions CASE retournent toute valeur que vous précisez dans votre clause THEN. C'est un outil extrêmement puissant pour des calculs robustes et la manipulation des données lorsqu'il est utilisé avec une fonction d'agrégation. Une tâche clé consiste à utiliser CASE à l'intérieur d'une fonction AVG pour calculer une fraction d'information dans votre base de données.

Voici un exemple de configuration :

AVG(CASE WHEN condition_is_met THEN 1
         WHEN condition_is_not_met THEN 0 END)

Avec cette approche, il est important d'indiquer précisément quels enregistrements comptent comme 0, sinon vos calculs pourraient être inexacts !

Votre tâche est d'examiner le nombre de victoires, de défaites et de matchs nuls dans chaque pays. La table matches est filtrée pour inclure tous les matchs des saisons 2013/2014 et 2014/2015.

Cette activité fait partie du cours

Manipulation de données en SQL

Voir le cours

Instructions de l’exercice

  • Dans une fonction AVG(), complétez l'instruction CASE en vérifiant si m.home_goal n'est pas égal à m.away_goal, et en attribuant la valeur 0 si cette condition est remplie.
  • Répétez le processus pour comparer les buts à domicile et à l'extérieur en '2014/2015', avec l'alias ties_2014_2015.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

SELECT 
	c.name AS country,
    -- Calculate the fraction of tied games in each season
	___(___ ___ m.season='2013/2014' AND m.home_goal = m.away_goal THEN 1
			WHEN m.season='2013/2014' AND m.home_goal ___ m.away_goal THEN ___
			END) AS ties_2013_2014,
	___(___ ___ m.season='2014/2015' ___ ___ = ___ ___ ___
			WHEN m.season='2014/2015' ___ m.home_goal != m.away_goal THEN ___
			___) AS ___
FROM country AS c
LEFT JOIN matches AS m
ON c.id = m.country_id
GROUP BY country;
Modifier et exécuter le code