เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

นำ CTE มารวมกัน

ตอนนี้ที่สร้าง subquery สำหรับระบุทีมคู่แข่งทั้งเหย้าและเยือนแล้ว ถึงเวลาจัดระเบียบคิวรีใหม่โดยใช้ subquery home และ away ในรูปแบบ Common Table Expressions (CTEs) คิวรีหลักมีการใช้ SELECT DISTINCT ซึ่งหากไม่ระบุเฉพาะแมตช์ที่ไม่ซ้ำกัน อาจได้รับข้อมูลที่ซ้ำกันสำหรับแต่ละเกมที่เล่น

ต่อยอดการสร้างคิวรีเพื่อดึงข้อมูลแมตช์ทั้งหมดที่ Manchester United ลงเล่นในฤดูกาล 2014/2015

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การจัดการข้อมูลใน SQL

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ประกาศ CTE home และ away ก่อนคิวรีหลัก
  • เชื่อม CTE เข้ากับตาราง match โดยใช้ LEFT JOIN
  • ดึงข้อมูลที่เกี่ยวข้องจาก CTE เข้าสู่คิวรีหลัก
  • เลือกวันที่จากตาราง match ชื่อทีมจาก CTE และจำนวนประตูเหย้า/เยือนจากตาราง match ในคิวรีหลัก

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

-- Set up the home team CTE
___ ___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Win'
		   WHEN m.home_goal < m.away_goal THEN 'MU Loss' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.hometeam_id = t.team_api_id),
-- Set up the away team CTE
___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Loss'
		   WHEN m.home_goal < m.away_goal THEN 'MU Win' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.awayteam_id = t.team_api_id)
-- Select the date, team names and goals
SELECT DISTINCT
    ___.___,
    ___.___ AS home_team_name,
    ___.___ AS away_team_name,
    ___.___,
    m.away_goal
-- Join the CTEs onto the match table
FROM match AS m
___ JOIN ___ ON m.id = ___
___ JOIN ___ ON m.id = ___
WHERE m.season = '2014/2015'
      AND (home.team_long_name = 'Manchester United' 
           OR away.team_long_name = 'Manchester United');
แก้ไขและรันโค้ด