PARTITION BY ตามคอลัมน์
คำสั่ง PARTITION BY ช่วยให้คำนวณ "windows" แยกกันตามคอลัมน์ที่กำหนด ตัวอย่างเช่น สามารถสร้างคอลัมน์เดียวที่แสดงค่าเฉลี่ยประตูโดยรวมของแต่ละฤดูกาลได้
ในแบบฝึกหัดนี้ จะสร้างชุดข้อมูลเกมของ Legia Warszawa (สโมสรลีกวอร์ซอ) ทีมอันดับหนึ่งของโปแลนด์ แล้วเปรียบเทียบผลการแข่งขันรายเกมกับค่าเฉลี่ยโดยรวมของฤดูกาลนั้น
คิดว่าจะพบค่าผิดปกติ (outlier) มากกว่าในเกมเหย้าหรือเกมเยือนของ Legia Warszawa?
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจัดการข้อมูลใน SQL
คำแนะนำการฝึกหัด
- เติม window function ทั้งสองตัวที่คำนวณค่าเฉลี่ย average ประตูเจ้าบ้านและทีมเยือน โดยใช้ PARTITION BY ตามฤดูกาล เพื่อคำนวณค่าเฉลี่ยแยกในแต่ละฤดูกาล
- Filter คิวรีให้แสดงเฉพาะนัดที่ Legia Warszawa เป็นผู้เล่น โดย
id = 8673
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
date,
season,
home_goal,
away_goal,
CASE WHEN hometeam_id = 8673 THEN 'home'
ELSE 'away' END AS warsaw_location,
-- Calculate separately the average home and away goals scored, partitioned by season
___(___) ___(___ ___ ___) AS season_homeavg,
___(___) ___(___ ___ ___) AS season_awayavg
FROM match
-- Filter the data set for Legia Warszawa (id 8673) matches only
WHERE
___ = ___
OR ___ = ___
ORDER BY (home_goal + away_goal) DESC;