CTEs के साथ क्लीन अप करें
अध्याय 2 में, आपने उन देशों की सूची निकाली थी और प्रत्येक देश में उन मैचों की संख्या गिनी थी जिनमें कुल गोल 10 से अधिक थे. उस अभ्यास की क्वेरी ने मुख्य क्वेरी में गिनने से पहले मैचों को फ़िल्टर करने के लिए 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;
आप एक (या अधिक) सबक्वेरीज़ को अपनी मुख्य क्वेरी से पहले डिक्लेयर करके common table expressions (CTEs) के रूप में लिख सकते हैं. यह सूचना को व्यवस्थित करने और उसे तार्किक क्रम में रखने का बेहतरीन तरीका है.
इस अभ्यास में, आइए इसी तरह की क्वेरी को CTE का उपयोग करके फिर से लिखें.
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL में Data Manipulation
अभ्यास निर्देश
- अपने CTE को डिक्लेयर करने के लिए सिंटैक्स पूरा करें.
- अपनी CTE में
matchटेबल सेcountry_idऔर मैचidसेलेक्ट करें. country_idका उपयोग करके CTE को league टेबल सेLEFT JOINकरें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
-- 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;