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
Instructions
- Dans une fonction
AVG()
, complétez l'instructionCASE
en vérifiant sim.home_goal
n'est pas égal àm.away_goal
et en attribuant la valeur0
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'aliasties_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;