शुरू करेंमुफ़्त में शुरू करें

अंश निकालने के लिए 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_goal m.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;
कोड संपादित करें और चलाएँ