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

การใช้ CASE และ AVG เพื่อคำนวณสัดส่วน

CASE statement สามารถคืนค่าใดก็ได้ที่ระบุไว้ใน THEN clause ซึ่งเป็นเครื่องมือที่ทรงพลังมากสำหรับการคำนวณและการจัดการข้อมูลที่ซับซ้อน โดยเฉพาะเมื่อใช้ร่วมกับฟังก์ชัน aggregate หนึ่งในสิ่งที่ทำได้คือการใช้ CASE ภายใน AVG เพื่อคำนวณสัดส่วนของข้อมูลในฐานข้อมูล

นี่คือตัวอย่างการตั้งค่า:

AVG(CASE WHEN condition_is_met THEN 1
         WHEN condition_is_not_met THEN 0 END)

วิธีนี้ต้องระบุให้ชัดเจนว่าระเบียนใดนับเป็น 0 มิฉะนั้นผลการคำนวณอาจคลาดเคลื่อนได้

ในแบบฝึกหัดนี้ให้ตรวจสอบจำนวนการชนะ การแพ้ และการเสมอในแต่ละประเทศ โดยตาราง matches ถูกกรองให้แสดงเฉพาะแมตช์จากฤดูกาล 2013/2014 และ 2014/2015

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การจัดการข้อมูลใน SQL

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ภายในฟังก์ชัน AVG() ให้เติม CASE statement โดยตรวจสอบว่า m.home_goal ไม่เท่ากับ m.away_goal หรือไม่ และกำหนดค่า 0 หากเงื่อนไขนี้เป็นจริง
  • ทำซ้ำกระบวนการเดิมเพื่อเปรียบเทียบประตูเหย้าและประตูเยือนในฤดูกาล '2014/2015' พร้อม alias ว่า ties_2014_2015

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

SELECT 
	c.name AS country,
    -- Calculate the fraction of tied games in each season
	___(___ ___ m.season='2013/2014' AND m.home_goal = m.away_goal THEN 1
			WHEN m.season='2013/2014' AND m.home_goal ___ m.away_goal THEN ___
			END) AS ties_2013_2014,
	___(___ ___ m.season='2014/2015' ___ ___ = ___ ___ ___
			WHEN m.season='2014/2015' ___ m.home_goal != m.away_goal THEN ___
			___) AS ___
FROM country AS c
LEFT JOIN matches AS m
ON c.id = m.country_id
GROUP BY country;
แก้ไขและรันโค้ด