अंश निकालने के लिए CASE और AVG का उपयोग
CASE स्टेटमेंट आपके THEN क्लॉज़ में दिए गए किसी भी मान को लौटा सकता है. किसी aggregate स्टेटमेंट के साथ मिलाकर इस्तेमाल करने पर यह मज़बूत कैलकुलेशन और डेटा मैनिपुलेशन के लिए बेहद शक्तिशाली टूल है. एक महत्वपूर्ण काम जो आप कर सकते हैं, वह है अपने डेटाबेस में किसी जानकारी के अंश (fraction) की गणना करने के लिए AVG फंक्शन के अंदर CASE का उपयोग करना.
इसे सेटअप करने का एक उदाहरण यह है:
AVG(CASE WHEN condition_is_met THEN 1
WHEN condition_is_not_met THEN 0 END)
इस तरीके में, यह साफ़-साफ़ बताना ज़रूरी है कि किन रिकॉर्ड्स की गिनती 0 के रूप में होगी, वरना आपके कैलकुलेशन सही नहीं आ सकते!
आपका काम है हर देश में जीत, हार, और टाई की संख्या जाँचना. matches टेबल को फ़िल्टर किया गया है ताकि इसमें 2013/2014 और 2014/2015 सीज़न के सभी मैच शामिल हों.
यह अभ्यास पाठ्यक्रम का हिस्सा है
SQL में Data Manipulation
अभ्यास निर्देश
AVG()फंक्शन के भीतर,CASEस्टेटमेंट को पूरा करें: जाँचें किm.home_goalm.away_goalके बराबर नहीं है, और यह शर्त पूरी होने पर मान0असाइन करें.- इसी प्रक्रिया को
'2014/2015'में home और away goals की तुलना के लिए दोहराएँ, और उसेties_2014_2015के रूप में उपनाम (alias) दें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
SELECT
c.name AS country,
-- Calculate the fraction of tied games in each season
___(___ ___ m.season='2013/2014' AND m.home_goal = m.away_goal THEN 1
WHEN m.season='2013/2014' AND m.home_goal ___ m.away_goal THEN ___
END) AS ties_2013_2014,
___(___ ___ m.season='2014/2015' ___ ___ = ___ ___ ___
WHEN m.season='2014/2015' ___ m.home_goal != m.away_goal THEN ___
___) AS ___
FROM country AS c
LEFT JOIN matches AS m
ON c.id = m.country_id
GROUP BY country;