競技別のBMIバケット
夏季競技ごとに BMI がどのように異なるかを把握したいとします。これに答えるため、次の項目を含むレポートを作成してください。
- sport: 夏季競技の名前
- bmi_bucket: BMI を3つのグループに分割します:
<.25,.25-.30,>.30 - athletes: アスリートのユニーク数
定義: BMI = 100 * weight / (height squared)。
また、CASE 文は行ごとに評価され、2つ目の条件は1つ目が偽のときにのみ適用されます。これにより、すでに評価済みの条件を除外するための AND 文は不要です。
必要に応じて E:R 図 を参照してください。
この演習はコースの一部です
SQLでのレポーティング
演習の手順
summer_gamesとathletesからデータを取得し、sport、bmi_bucket、athletesを表示するクエリを作成します。ANDやELSEを使わずに、CASE文でbmi_bucketを'<.25'、'.25-.30'、'>.30'の3つに分割します。- 集計していない列で GROUP BY を行います。
- レポートは sport、次に athletes の降順で並べ替えます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- 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 ____;