การกรองข้อมูลด้วย scalar subquery
Subquery มีประสิทธิภาพมากในการกรองและแปลงข้อมูลที่ซับซ้อน สามารถใช้กรองข้อมูลตามค่าเดี่ยว (scalar) ได้ในแบบที่คำสั่ง WHERE หรือการ join ทำไม่ได้ นอกจากนี้ยังนำมาใช้จัดการชุดข้อมูลในรูปแบบขั้นสูงได้อีกด้วย ในสภาพแวดล้อมการทำงานจริงที่ใช้ฐานข้อมูลเชิงสัมพันธ์ มักพบ subquery อยู่เสมอ
ในแบบฝึกหัดนี้ จะสร้างรายการแมตช์ที่มีจำนวนประตูรวม (ของทั้งสองทีม) มากกว่า 3 เท่า ของค่าเฉลี่ยในตาราง matches_2013_2014 ซึ่งครอบคลุมเกมทั้งหมดในฤดูกาล 2013/2014
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจัดการข้อมูลใน SQL
คำแนะนำการฝึกหัด
- คำนวณค่า 3 เท่าของค่าเฉลี่ย ประตูเหย้า + ประตูเยือน จากทุกแมตช์ใน subquery
- กรองคิวรีหลักเพื่อเลือกเฉพาะแมตช์ที่มีจำนวนประตูรวม (ประตูเหย้า + ประตูเยือน) มากกว่าค่าที่ได้จาก subquery
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
date,
home_goal,
away_goal
FROM matches_2013_2014
-- Filter for matches where total goals is greater than 3x the average
WHERE (___ + ___) ___
(SELECT ___ * AVG(___ + ___)
FROM ___);