各運動的 BMI 分佈
你想了解各個夏季運動之間的 BMI 有何差異。為了回答這個問題,請建立一份報表,包含以下欄位:
- sport:夏季運動的名稱
- bmi_bucket:將 BMI 分成 3 組:
<.25、.25-.30、>.30 - athletes:運動員的唯一人數
定義:BMI = 100 * weight /(height 的平方)。
另外請注意,CASE 陳述會逐列執行,因此只有在第一個條件為假時,第二個條件才會被套用。這表示你不需要使用 AND 來排除已經涵蓋的條件。
如需參考,請查看 E:R Diagram。
本練習屬於課程
SQL 報表製作
練習說明
- 建立一個查詢,從
summer_games與athletes擷取資料,輸出sport、bmi_bucket與athletes。 - 在不使用
AND或ELSE的情況下,設定一個CASE陳述,將bmi_bucket分成 3 組:'<.25'、'.25-.30'、'>.30'。 - 以未彙總的欄位進行分組。
- 依 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 ____;