Tranche d’IMC par sport
Vous cherchez à comprendre comment l’IMC varie selon chaque sport d’été. Pour y répondre, créez un rapport contenant :
- sport, le nom du sport d’été
- bmi_bucket, qui regroupe l’IMC en trois catégories :
<.25,.25-.30,>.30 - athletes, le nombre d’athlètes uniques
Définition : IMC = 100 * weight / (height au carré).
Notez également que les instructions CASE s’exécutent ligne par ligne : la deuxième condition n’est évaluée que si la première est fausse. Vous n’avez donc pas besoin d’un AND pour exclure les conditions déjà testées.
N’hésitez pas à consulter le schéma E:R.
Cet exercice fait partie du cours
Réaliser des rapports en SQL
Instructions
- Écrivez une requête qui extrait
sport,bmi_bucketetathletesà partir desummer_gamesetathletes. - Sans utiliser
ANDniELSE, créez une instructionCASEqui répartitbmi_bucketen trois groupes :'<.25','.25-.30'et'>.30'. - Regroupez par les champs non agrégés.
- Triez le rapport par sport puis par nombre d’athlètes en ordre décroissant.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
-- Pull in sport, bmi_bucket, and athletes
SELECT
____,
-- Bucket BMI in three groups: <.25, .25-.30, and >.30
CASE WHEN ____ THEN '<.25'
WHEN ____ THEN '.25-.30'
WHEN ____ THEN '>.30' END AS bmi_bucket,
____ AS athletes
FROM ____ AS s
JOIN ____ AS a
ON ____
-- GROUP BY non-aggregated fields
GROUP BY ____
-- Sort by sport and then by athletes in descending order
ORDER BY ____;