SQL साक्षात्कार की तैयारी · पाठ

नेस्टेड क्वेरी को CTE में पुनर्गठित करना

लाइव साक्षात्कार का पैटर्न: अपठनीय नेस्टेड क्वेरी को क्रमिक CTE में बदलना

पाठ 4, कुल 4 में से13 चरण

नेस्टेड क्वेरी को CTE में पुनर्गठित करना, CoddyKit पर SQL साक्षात्कार की तैयारी का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL साक्षात्कार की तैयारी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

लाइव साक्षात्कार में पुनर्संरचना

मध्य-स्तर का एक सामान्य प्रश्न होता है: यह क्वेरी है, इसे पठनीय बनाइए। साक्षात्कारकर्ता आपको बहुत गहराई तक अंदर रखी गई SELECT क्वेरी देता है और देखता है कि आप उसे कैसे विभाजित करते हैं। नेस्टिंग को नामित CTE के क्रम में बदलना इसका सबसे साफ़ उत्तर है।

यह पाठ ठीक वे चरण दिखाता है, ताकि आप श्वेतपट पर भी यह काम शांतिपूर्वक कर सकें।

सबसे भीतर की क्वेरी से शुरू करें

अंदर रखी गई उप-क्वेरी वैचारिक रूप से भीतर से बाहर की ओर चलती हैं। इसलिए क्वेरी को भी भीतर से बाहर की ओर पढ़ें: सबसे गहरी कोष्ठक-बद्ध SELECT को पहले खोजें; यही आपकी पहली प्रक्रिया का चरण है।

इसे एक वर्णनात्मक नाम दें और CTE में अलग निकाल लें। जो कुछ उस अंदरूनी खंड का संदर्भ लेता था, वह अब उसके बजाय CTE के नाम का संदर्भ लेगा।

SELECT *
FROM (
    SELECT customer_id, SUM(amount) AS total
    FROM orders
    GROUP BY customer_id
) t
WHERE t.total > 1000;

एक स्तर को CTE में बदलें

उस सबसे भीतर की व्युत्पन्न तालिका को लेकर उसे CTE में बदल दें। बाहरी क्वेरी वैसी ही रहती है, बस अब वह नामित CTE से चयन करती है।

यह एक कदम मानसिक नेस्टिंग का एक स्तर हटा देता है और उस चरण को सार्थक नाम देता है।

WITH spend AS (
    SELECT customer_id, SUM(amount) AS total
    FROM orders
    GROUP BY customer_id
)
SELECT *
FROM spend
WHERE total > 1000;

वास्तव में नेस्ट किया हुआ उदाहरण

यहाँ पुनर्संरचना के लिए एक कठिन उदाहरण है: नेस्टिंग के दो स्तर और उसके साथ सहसंबंधित-जैसा फ़िल्टर। लक्ष्य सर्वाधिक खर्च वाले स्तर के ग्राहकों के बीच औसत ऑर्डर मूल्य निकालना है।

क्वेरी सही है, लेकिन पढ़ना कठिन है। हम इसे चरण-दर-चरण अलग करेंगे।

SELECT AVG(o.amount) AS avg_order
FROM orders o
WHERE o.customer_id IN (
    SELECT customer_id
    FROM (
        SELECT customer_id, SUM(amount) AS total
        FROM orders
        GROUP BY customer_id
    ) s
    WHERE s.total > 1000
);

पहले चरण का नाम रखें

सबसे गहरा खंड प्रत्येक ग्राहक का कुल खर्च निकालता है। इसे spend नामक CTE में अलग निकालें। अब मध्य स्तर केवल उस CTE को छाँटता है।

ध्यान दें कि हर बार कुछ अलग निकालने पर नेस्टिंग की गहराई एक स्तर कम होती है और एक स्वयं-व्याख्यात्मक नाम जुड़ता है।

WITH spend AS (
    SELECT customer_id, SUM(amount) AS total
    FROM orders
    GROUP BY customer_id
)
SELECT AVG(o.amount) AS avg_order
FROM orders o
WHERE o.customer_id IN (
    SELECT customer_id FROM spend WHERE total > 1000
);

दूसरे चरण का नाम रखें

spend पर लगाए गए फ़िल्टर को अलग CTE big_spenders में निकालें। अब बची हुई मुख्य क्वेरी स्पष्ट नाम वाले समुच्चय के साथ एक सरल जोड़ या सदस्यता परीक्षण बन जाती है।

अब प्रत्येक चरण की एक ही जिम्मेदारी है, जो साफ़ एसक्यूएल की पहचान है।

WITH spend AS (
    SELECT customer_id, SUM(amount) AS total
    FROM orders GROUP BY customer_id
),
big_spenders AS (
    SELECT customer_id FROM spend WHERE total > 1000
)
SELECT AVG(o.amount) AS avg_order
FROM orders o
JOIN big_spenders b ON b.customer_id = o.customer_id;

पुनर्संरचना करते समय अर्थ सुरक्षित रखें

मूल नियम: पुनर्संरचना से परिणाम नहीं बदलने चाहिए। उन समस्याओं पर ध्यान दें जो चुपचाप परिणाम बदल सकती हैं:

  • IN को JOIN में बदलने पर दोहराई हुई पंक्तियाँ आ सकती हैं, यदि दाईं ओर के मान अद्वितीय न हों।
  • रिक्त मानों के साथ NOT IN का व्यवहार NOT EXISTS से अलग होता है।
  • समेकन का स्तर वही रहना चाहिए।

अपनी सावधानी दिखाने के लिए इन जोखिमों को स्पष्ट रूप से बताइए।

पुनर्गठन का सत्यापन

आप कैसे सिद्ध करेंगे कि पुनर्गठन मूल क्वेरी के अनुरूप है? बताइए कि आप दोनों संस्करण चलाकर पंक्तियों की संख्या और चेकसम की तुलना करेंगे, या किसी नमूने पर परिणाम-समुच्चयों का अंतर निकालेंगे।

साक्षात्कार में, मैं संख्याओं और कुछ नमूना पंक्तियों की तुलना करके सत्यापन करूँगा—इतना कहना भी केवल सिंटैक्स दोबारा लिखने से आगे का इंजीनियरिंग अनुशासन दर्शाता है।

SELECT COUNT(*), SUM(amount)
FROM orders
WHERE customer_id IN (SELECT customer_id FROM big_spenders);

पुनर्गठन कब न करें

पुनर्गठन हमेशा सुधार नहीं होता। एकल, सरल उप-क्वेरी को वैसे ही छोड़ना अधिक स्पष्ट हो सकता है, और उसे बहुत-सी छोटी CTE में बाँटने से पठनीयता को भी नुकसान पहुँच सकता है।

विवेक का प्रयोग करें: जब नेस्टिंग आशय को अस्पष्ट करे या तर्क का दोबारा उपयोग हो रहा हो, तभी पुनर्गठन करें। साक्षात्कारकर्ता को बताइए कि आप तब रुकेंगे जब क्वेरी ऊपर से नीचे तक अलग-अलग, नामित चरणों के रूप में पढ़ी जा सके।

पुनर्गठन की जाँच-सूची

दोहराने योग्य विधि इस प्रकार है:

  • सबसे गहरी उप-क्वेरी खोजने के लिए भीतर से बाहर की ओर पढ़ें।
  • उसे एक नामित CTE में अलग करें।
  • एक बार में एक स्तर ऊपर जाते हुए यही दोहराएँ।
  • हर चरण का नाम उसके द्वारा बनाए जाने वाले परिणाम के आधार पर रखें।
  • पुष्टि करें कि परिणाम बदले नहीं हैं (IN/JOIN और NULL से जुड़े जालों पर ध्यान दें)।

इससे डरावनी नेस्टेड क्वेरी शांतिपूर्वक, चरण-दर-चरण किए गए पुनर्लेखन में बदल जाती है।

अपने पुनर्गठन को स्पष्ट रूप से बताना

काम करते समय बोलते रहें: सबसे भीतर वाला खंड प्रत्येक ग्राहक के खर्च का है, इसलिए मैं इसका नाम spend रखूँगा। अगला स्तर अधिक खर्च करने वालों को फ़िल्टर करता है। फिर बाहरी क्वेरी उनके ऑर्डर की राशियों का औसत निकालती है।

साक्षात्कारकर्ता शुद्धता जितना ही संप्रेषण का भी मूल्यांकन करते हैं। चरण-दर-चरण बताया गया पुनर्गठन ठीक वही मध्यम-स्तरीय परिपक्वता दिखाता है जिसकी वे अपेक्षा करते हैं।

त्वरित जाँच

गहराई से नेस्टेड क्वेरी को CTE में पुनर्गठित करते समय सही पहला कदम पहचानिए।

पुनरावलोकन: CTE में पुनर्गठन

आपने एक शांत, दोहराने योग्य पुनर्गठन विधि सीखी: भीतर से बाहर की ओर पढ़ना, सबसे गहरी उप-क्वेरी को नामित CTE में अलग करना और एक बार में एक स्तर बाहर की ओर बढ़ना।

  • हर चरण का नाम उसके द्वारा बनाए जाने वाले परिणाम के आधार पर रखें।
  • अर्थ-संगति बनाए रखें; IN-बनाम-JOIN से बनने वाली डुप्लिकेट पंक्तियों और NULL से जुड़े जालों पर ध्यान दें।
  • संख्याओं और नमूना पंक्तियों की तुलना करके सत्यापन करें।
  • बहुत अधिक विभाजन न करें; जब क्वेरी स्पष्ट, नामित चरणों के रूप में पढ़ी जा सके, तब रुक जाएँ।

इससे CTE पाठ्यक्रम पूरा होता है; अब आप लाइव साक्षात्कार में आत्मविश्वास से पुनर्गठन कर सकते हैं।

शुरुआत निःशुल्क

एआई शिक्षक के साथ SQL सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “नेस्टेड क्वेरी को CTE में पुनर्गठित करना” पाठ निःशुल्क है?

हाँ—“नेस्टेड क्वेरी को CTE में पुनर्गठित करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL साक्षात्कार की तैयारी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“नेस्टेड क्वेरी को CTE में पुनर्गठित करना” में मैं क्या सीखूँगा?

लाइव साक्षात्कार का पैटर्न: अपठनीय नेस्टेड क्वेरी को क्रमिक CTE में बदलना आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL साक्षात्कार की तैयारी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या SQL साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL साक्षात्कार की तैयारी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“नेस्टेड क्वेरी को CTE में पुनर्गठित करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस SQL साक्षात्कार की तैयारी पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर SQL साक्षात्कार की तैयारी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. अपनी पहली CTE लिखना
  2. कई CTE को जोड़ना
  3. CTE बनाम सबक्वेरी बनाम अस्थायी तालिका
  4. नेस्टेड क्वेरी को CTE में पुनर्गठित करना
← SQL साक्षात्कार की तैयारी पर वापस जाएँ