PARTITION BY หลายคอลัมน์
คำสั่ง PARTITION BY สามารถใช้แบ่ง window average ออกตามข้อมูลหลายจุด (หลายคอลัมน์) ได้ และยังคำนวณค่าที่ต้องการใช้สำหรับการแบ่ง partition ได้โดยตรงอีกด้วย ตัวอย่างเช่น สามารถคำนวณค่าเฉลี่ยประตูที่ทำได้แยกตามฤดูกาลและประเทศ หรือแยกตามปีในปฏิทิน (ดึงมาจากคอลัมน์วันที่)
ในแบบฝึกหัดนี้ จะคำนวณค่าเฉลี่ยประตูเหย้าและเยือนของทีม Legia Warszawa และคู่แข่ง โดยแบ่ง partition ตามเดือนในแต่ละฤดูกาล
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจัดการข้อมูลใน SQL
คำแนะนำการฝึกหัด
- สร้าง window function 2 ตัว โดย partition ค่าเฉลี่ยประตูเหย้าและเยือนตามฤดูกาลและเดือน
- กรองชุดข้อมูลโดยใช้ ID ของทีม Legia Warszawa (
8673) เพื่อให้การคำนวณ window ครอบคลุมเฉพาะแมตช์ที่ทีมนี้เกี่ยวข้องเท่านั้น
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
date,
season,
home_goal,
away_goal,
CASE WHEN hometeam_id = 8673 THEN 'home'
ELSE 'away' END AS warsaw_location,
-- Calculate average goals partitioned by season and month
___(home_goal) ___(___ ___ ___,
EXTRACT(___ FROM date)) AS season_mo_home,
___(away_goal) ___(___ ___ ___,
EXTRACT(___ FROM date)) AS season_mo_away
FROM match
WHERE
hometeam_id = ___
OR awayteam_id = ___
ORDER BY (home_goal + away_goal) DESC;