ต่อยอดจาก Subquery ใน FROM
จากแบบฝึกหัดก่อนหน้า พบว่าอังกฤษ เนเธอร์แลนด์ เยอรมนี และสเปน เป็นประเทศเดียวในฐานข้อมูลที่มีแมตช์ที่ทำประตูได้รวมกัน 10 ประตูขึ้นไป คราวนี้มาดูรายละเอียดเพิ่มเติมของแมตช์เหล่านั้นกัน ทั้งวันที่แข่ง ฤดูกาล และจำนวนประตูที่ทำได้ฝ่ายเหย้าและฝ่ายเยือน
สังเกตว่าในแบบฝึกหัดนี้ ไม่มีการระบุ alias ของตารางสำหรับทุกคอลัมน์ที่ SELECT ในคิวรีหลัก เนื่องจาก คิวรีหลัก ดึงข้อมูลจาก subquery ซึ่งถือเป็น ตารางเดียว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การจัดการข้อมูลใน SQL
คำแนะนำการฝึกหัด
- เติม subquery ภายใน clause
FROMโดย SELECT คอลัมน์nameของประเทศจากตารางcountryพร้อมกับคอลัมน์date,home_goal,away_goalและtotal_goalsจากตารางmatch - สร้างคอลัมน์ใน subquery ที่รวมประตูเหย้าและประตูเยือนเข้าด้วยกัน ตั้งชื่อว่า
total_goalsเพื่อนำไปใช้กรองคิวรีหลัก - SELECT คอลัมน์
country,date,home_goalและaway_goalในคิวรี หลัก - กรอง คิวรีหลักให้แสดงเฉพาะแมตช์ที่มีประตูรวม 10 ประตูขึ้นไป
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
-- Select country, date, home, and away goals from the subquery
___,
date,
___,
away_goal
FROM
-- Select country name, date, home_goal, away_goal, and total goals in the subquery
(SELECT ___ AS country,
m.date,
___,
m.away_goal,
(___ + m.away_goal) AS total_goals
FROM match AS m
LEFT JOIN country AS c
ON m.country_id = c.id) AS subq
-- Filter by total goals scored in the main query
WHERE total_goals ___ ___;