การแข่งขัน OVER แล้ว
clause OVER() ช่วยให้สามารถนำฟังก์ชัน aggregate ไปใช้กับชุดข้อมูลทั้งหมดได้ คล้ายกับการใช้ subquery ใน SELECT แต่มีข้อดีกว่าตรงที่คิวรีจะทำงานได้เร็วขึ้น และ OVER() ยังมีฟังก์ชันและ clause เพิ่มเติมอีกมากที่จะได้เรียนรู้ในบทนี้
ในแบบฝึกหัดนี้ จะนำคิวรีจากบทก่อนหน้ามาปรับใหม่โดยใช้ clause OVER()
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจัดการข้อมูลใน SQL
คำแนะนำการฝึกหัด
- เลือก
IDของแมตช์,nameของประเทศ,season,home_goalและaway_goalจากตารางmatchและcountry - เติมคิวรีให้สมบูรณ์เพื่อคำนวณจำนวนประตูเฉลี่ยโดยรวม แล้วแสดงค่าaggregateนั้นในทุกแถวโดยใช้ฟังก์ชันwindow
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
-- Select the match id, country name, season, home, and away goals
___,
c.___ AS country,
m.season,
___.home_goal,
___,
-- Use a window to include the aggregate average in each row
___(___.home_goal + ___) ___ AS overall_avg
FROM match AS m
LEFT JOIN country AS c ON m.country_id = c.id;