Nhóm BMI theo môn thể thao
Bạn muốn hiểu BMI khác nhau như thế nào theo từng môn thể thao mùa hè. Để trả lời, hãy thiết lập một báo cáo gồm các phần sau:
- sport, tên của môn thể thao mùa hè
- bmi_bucket, chia BMI thành ba nhóm:
<.25,.25-.30,>.30 - athletes, số vận động viên duy nhất
Định nghĩa: BMI = 100 * weight / (height bình phương).
Lưu ý thêm rằng các câu lệnh CASE chạy theo từng hàng, nên điều kiện thứ hai chỉ được áp dụng nếu điều kiện thứ nhất sai. Nhờ vậy bạn không cần dùng AND để loại trừ các điều kiện đã xét trước đó.
Bạn có thể tham khảo E:R Diagram.
Bài tập này là một phần của khóa học
Lập báo cáo trong SQL
Hướng dẫn bài tập
- Viết truy vấn lấy dữ liệu từ
summer_gamesvàathletesđể hiển thịsport,bmi_bucketvàathletes. - Không dùng
ANDhoặcELSE, hãy tạo câu lệnhCASEđể chiabmi_bucketthành ba nhóm:'<.25','.25-.30'và'>.30'. - GROUP BY các trường không tổng hợp.
- Sắp xếp báo cáo theo sport, sau đó theo athletes giảm dần.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
-- 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 ____;