按运动划分的 BMI 分组
您想了解各个夏季项目的 BMI 有何差异。为此,请搭建一个包含以下内容的报告:
- sport:夏季运动项目名称
- bmi_bucket:将 BMI 分为 3 组:
<.25、.25-.30、>.30 - athletes:运动员的唯一人数
定义:BMI = 100 * weight / (height 的平方)。
另请注意,CASE 语句是按行执行的,因此只有在第一个条件为假时才会应用第二个条件。这样就不需要使用 AND 来排除已覆盖的条件。
如需参考,请查看 E:R 图。
本练习是课程的一部分
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 ____;