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

จัดระเบียบโค้ดด้วย CTE

ในบทที่ 2 คุณได้สร้างรายการประเทศพร้อมจำนวนแมตช์ในแต่ละประเทศที่มีประตูรวมมากกว่า 10 ประตู คิวรีนั้นใช้ subquery ใน statement FROM เพื่อกรองแมตช์ก่อนที่จะนับในคิวรีหลัก ดังนี้:

SELECT
  c.name AS country,
  COUNT(sub.id) AS matches
FROM country AS c
INNER JOIN (
  SELECT country_id, id 
  FROM match
  WHERE (home_goal + away_goal) >= 10) AS sub
ON c.id = sub.country_id
GROUP BY country;

คุณสามารถกำหนด subquery หนึ่งรายการขึ้นไปเป็น common table expressions (CTEs) ได้ โดยประกาศไว้ก่อนคิวรีหลัก ซึ่งเป็นเครื่องมือที่ดีในการจัดระเบียบข้อมูลและเรียงลำดับตรรกะให้ชัดเจน

ในแบบฝึกหัดนี้ ลองเขียนคิวรีในลักษณะเดียวกันโดยใช้ CTE

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

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

ดูคอร์ส

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

  • เติมโค้ดให้ครบเพื่อประกาศ CTE
  • เลือก country_id และ id ของแมตช์จากตาราง match ใน CTE
  • ใช้ LEFT JOIN เชื่อม CTE กับตาราง league โดยใช้ country_id

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

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

-- Set up your CTE
___ match_list ___ (
    SELECT 
  		country_id, 
  		___
    FROM match
    WHERE (home_goal + away_goal) >= 10)
-- Select league name and count of matches from the CTE
SELECT
    l.name AS league,
    COUNT(match_list.id) AS matches
FROM league AS l
-- Join the CTE to the league table using country_id
LEFT JOIN ___ ON l.id = ___
GROUP BY l.name;
แก้ไขและรันโค้ด