เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

จัดกลุ่ม 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 ____;
แก้ไขและรันโค้ด