CommencerCommencer gratuitement

Calcul du pourcentage avec CASE et AVG

Les instructions CASE renverront toutes les valeurs spécifiées dans la clause THEN. Cet outil est incroyablement puissant pour les calculs et la manipulation complexes de données lorsqu’il est utilisé avec une instruction agrégée. Vous pouvez notamment utiliser l’instruction CASE à l’intérieur d’une fonction AVG pour calculer un pourcentage d’informations dans votre base de données.

Voici un exemple de la manière dont vous pouvez configurer cela :

AVG(CASE WHEN condition_is_met THEN 1

         WHEN condition_is_not_met THEN 0 END)

Avec cette approche, il est important de préciser les enregistrements ayant la valeur 0. Sinon, vos calculs risquent d’être incorrects !

Votre tâche consiste à 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.

Cet exercice fait partie du cours

Manipulation de données en SQL

Afficher le cours

Instructions

  • 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 ce processus pour comparer les buts marqués à domicile et à l'extérieur dans '2014/2015', en utilisant l'alias ties_2014_2015.

Exercice interactif pratique

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

SELECT 
	c.name AS country,
    -- Calculate the percentage 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_14,
	___(___ ___ 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