Subqueries ใน SELECT สำหรับการคำนวณ
Subqueries ใน SELECT เป็นวิธีที่มีประโยชน์ในการสร้างคอลัมน์ที่คำนวณค่าได้ภายใน query โดย subquery ใน SELECT จะถูกมองเป็นค่าตัวเลขเดี่ยวที่นำไปใช้ในการคำนวณได้ สิ่งสำคัญที่ต้องจำไว้เมื่อเขียน subquery ใน SELECT คือการกรองข้อมูลใน query หลักจะไม่ส่งผลต่อ subquery และในทางกลับกันก็เช่นเดียวกัน
ในแบบฝึกหัดที่ผ่านมา ได้สร้างคอลัมน์เพื่อเปรียบเทียบค่าเฉลี่ยประตูรวมของแต่ละลีกกับค่าเฉลี่ยประตูโดยรวมในฤดูกาล 2013/2014 ในแบบฝึกหัดนี้ จะเพิ่มคอลัมน์ที่เปรียบเทียบค่าเหล่านี้โดยตรง ด้วยการลบค่าเฉลี่ยโดยรวมจาก subquery ออก
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจัดการข้อมูลใน SQL
คำแนะนำการฝึกหัด
- เลือกค่าเฉลี่ยประตูที่ทำได้ต่อแมตช์ของแต่ละลีกใน query หลัก
- เลือกค่าเฉลี่ยประตูที่ทำได้ต่อแมตช์โดยรวมสำหรับฤดูกาล
'2013/2014'ใน subquery - ลบ subquery ออกจากค่าเฉลี่ยประตูที่คำนวณได้ของแต่ละลีก
- กรอง query หลักให้แสดงเฉพาะเกมจากฤดูกาล
'2013/2014'เท่านั้น
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
-- Select the league name and average goals scored
___ AS league,
ROUND(___(___ + m.away_goal),2) AS avg_goals,
-- Subtract the overall average from the league average
ROUND(AVG(___ + m.away_goal) ___
(SELECT ___(___ + away_goal)
FROM match
WHERE ___ = ___),2) AS diff
FROM league AS l
LEFT JOIN match AS m
ON l.country_id = m.country_id
-- Only include 2013/2014 results
WHERE ___ = ___
GROUP BY l.name;