จัดกลุ่ม 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' - จัดกลุ่มด้วยฟิลด์ที่ไม่ได้ใช้ฟังก์ชัน Aggregate
- เรียงลำดับรายงานตาม 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 ____;