कोडिंग साक्षात्कार की तैयारी · पाठ

एक तालिका के भीतर ROW की तुलना

युग्म, डुप्लिकेट और आस-पास के रिकॉर्ड खोजने के लिए SELF JOIN पैटर्न सीखें

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

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

पंक्ति-दर-पंक्ति तुलना के लिए स्वयं-जोड़

पदानुक्रमों के अलावा, स्वयं-जोड़ का दूसरा प्रमुख उपयोग एक ही तालिका की पंक्तियों की आपस में तुलना करना है। जनक-संतान संबंध के बजाय, आप मनचाही पंक्तियों की जोड़ियाँ बनाकर डुप्लिकेट, लगभग समान या आसन्न पंक्तियाँ ढूँढते हैं।

पैटर्न वही रहता है: तालिका को दो अलग उपनामों से संदर्भित करें और ऐसी ON शर्त लिखें जो उन दोनों पंक्तियों के बीच का संबंध व्यक्त करे जिन्हें आप जोड़ना चाहते हैं।

एक ही समूह में जोड़ियाँ ढूँढना

क्लासिक प्रश्न है: एक ही विभाग में काम करने वाले कर्मचारियों की सभी जोड़ियाँ ढूँढें। समान विभाग के आधार पर तालिका को स्वयं से जोड़ें, लेकिन दोनों पंक्तियों को अलग रखें।

साधारण जोड़ हर कर्मचारी को स्वयं से भी जोड़ देगा और हर जोड़ी को दो बार बनाएगा। इसे हम अगले चरण में ठीक करेंगे।

SELECT a.name, b.name, a.department
FROM employees a
JOIN employees b ON a.department = b.department;

स्वयं-युग्म और प्रतिबिंबित डुप्लिकेट हटाना

एक ही समूह में जोड़ियाँ बनाने की दो समस्याएँ हैं: एक पंक्ति स्वयं से मिलती है (Alice के साथ Alice), और हर जोड़ी दो बार दिखाई देती है (Alice-Bob और Bob-Alice)।

एक ही असमानता से दोनों समस्याएँ ठीक करें: a.id < b.id। इससे सुनिश्चित होता है कि दोनों पंक्तियाँ अलग हों और हर जोड़ी का केवल एक क्रम रखा जाए।

SELECT a.name, b.name, a.department
FROM employees a
JOIN employees b
  ON a.department = b.department
 AND a.id < b.id;

a.id < b.id क्यों, a.id <> b.id क्यों नहीं

a.id <> b.id का उपयोग स्वयं-युग्म हटा देता है, लेकिन दोनों क्रम फिर भी लौटाता है, जिससे परिणाम दोगुने हो जाते हैं। a.id < b.id का उपयोग स्वयं-युग्म हटाने के साथ-साथ एक ही चरण में उलटी क्रम वाली जोड़ी भी हटा देता है।

साक्षात्कारकर्ता विशेष रूप से < और <> के बीच के चुनाव पर ध्यान देते हैं; इससे पता चलता है कि आप स्वयं-जोड़ों के संयोजन-विज्ञान को समझते हैं।

-- <>  keeps Alice-Bob AND Bob-Alice (duplicated)
-- <   keeps only Alice-Bob (correct unique pairs)

डुप्लिकेट पंक्तियाँ ढूँढना

कुंजी वाले स्तंभों के आधार पर एक-दूसरे की प्रतिलिपि बनने वाले रिकॉर्ड ढूँढने के लिए, उन स्तंभों पर स्वयं-जोड़ करें और अलग प्राथमिक कुंजियाँ अनिवार्य करें।

यहाँ हम एक ही ईमेल पता साझा करने वाले ग्राहकों को सामने लाते हैं। a.id < b.id हर डुप्लिकेट जोड़ी को एक बार रखता है। अक्सर GROUP BY ... HAVING COUNT(*) > 1 अधिक सरल होता है, लेकिन स्वयं-जोड़ वास्तविक दोषपूर्ण जोड़ियों को एक-दूसरे के साथ दिखाता है।

SELECT a.id, b.id, a.email
FROM customers a
JOIN customers b
  ON a.email = b.email
 AND a.id < b.id;

आसन्न पंक्तियों की तुलना करना

विश्लेषकों का एक सामान्य कार्य है: प्रत्येक पंक्ति की तुलना क्रम में आने वाली अगली पंक्ति से करना, जैसे हर दिन की बिक्री की पिछले दिन से तुलना करना। स्वयं-जोड़ क्रमागत पंक्तियों की जोड़ियाँ बना सकता है।

यहाँ हम प्रत्येक दिन को ठीक एक दिन पहले वाली पंक्ति से जोड़कर अंतर निकालते हैं। यह तब काम करता है जब क्रम में कोई अंतराल न हो।

SELECT t.day, t.amount,
       t.amount - y.amount AS change_vs_prev
FROM daily_sales t
JOIN daily_sales y
  ON y.day = t.day - INTERVAL '1 day';

आसन्न पंक्तियों के स्वयं-जोड़ में अंतराल की समस्या

पिछली क्वेरी तब विफल हो जाती है जब कोई दिन अनुपस्थित हो: ठीक एक दिन पहले वाली कोई पंक्ति नहीं होती, इसलिए वह पंक्ति बाहर हो जाती है (आंतरिक जोड़) या आपको NULL मानों को संभालना पड़ता है।

इसीलिए साक्षात्कारकर्ता अक्सर आपको विंडो फ़ंक्शन जैसे LAG की ओर ले जाते हैं, जो 'पिछली पंक्ति से तुलना' के लिए मान के मिलान के बजाय क्रमिक स्थिति का उपयोग करते हैं और अंतराल को सहजता से संभालते हैं।

-- LAG handles gaps; the self join assumed contiguous days
SELECT day, amount,
       amount - LAG(amount) OVER (ORDER BY day) AS change_vs_prev
FROM daily_sales;

सेल्फ़ जॉइन बनाम विंडो फ़ंक्शन

इस चयन के लाभ-हानि को समझिए:

  • एक सेल्फ़ जॉइन मान के संबंध के आधार पर पंक्तियों की तुलना करता है (एक ही विभाग, पिछली तारीख)। यह लचीला है, लेकिन पंक्तियाँ कई गुना बढ़ सकती हैं और बीच के अंतरालों को गलत ढंग से संभाल सकता है।
  • एक विंडो फ़ंक्शन क्रमबद्ध विभाजन के भीतर क्रमिक स्थिति के आधार पर तुलना करता है। पिछली/अगली पंक्ति के तर्क के लिए यह अधिक साफ़ है।

‘सन्निकट पंक्ति से तुलना करें’ के लिए LAG/LEAD को प्राथमिकता दें। ‘किसी शर्त से मेल खाने वाले सभी युग्म खोजें’ के लिए सेल्फ़ जॉइन स्वाभाविक उपकरण है।

अपने समकक्षों से बेहतर प्रदर्शन करने वाली पंक्तियाँ

एक और पैटर्न: ऐसे कर्मचारियों को खोजिए जो अपने विभाग के कम-से-कम एक सहकर्मी से अधिक कमाते हैं। सेल्फ़ जॉइन इसे सीधे व्यक्त करता है।

हम प्रत्येक कर्मचारी को उसी विभाग के उन अन्य कर्मचारियों से जोड़ते हैं जो उससे कम कमाते हैं, फिर दिखाई देने वाले अद्वितीय कर्मचारियों को रखते हैं। यह लगभग अंग्रेज़ी वाक्य जैसा पढ़ता है।

SELECT DISTINCT a.name, a.department, a.salary
FROM employees a
JOIN employees b
  ON a.department = b.department
 AND a.salary > b.salary;

पंक्तियों के फैलाव पर ध्यान दें

गैर-अद्वितीय स्तंभ पर किए गए सेल्फ़ जॉइन से पंक्तियाँ कई गुना हो जाती हैं। 100 लोगों वाले विभाग में जोड़ियाँ बनाने पर फ़िल्टर लगाने से पहले लगभग 100 x 100 संभावित युग्म बन जाते हैं।

डुप्लिकेट हटाने वाली शर्त हमेशा शामिल करें (a.id < b.id) और जब आपको हर युग्म नहीं, बल्कि केवल शामिल पंक्तियाँ चाहिए हों, तो DISTINCT या समूहीकरण जोड़ें। साक्षात्कारों में पंक्तियों के इस तरह कई गुना बढ़ने की समझ का उल्लेख कीजिए।

तुलना का उपकरण चुनना

तालिका के भीतर तुलना के लिए निर्णय-मार्गदर्शिका:

  • सभी मेल खाने वाले युग्म (दोहराव, एक ही समूह के संयोजन): a.id < b.id के साथ सेल्फ़ जॉइन।
  • किसी क्रम में पिछली/अगली पंक्ति: विंडो फ़ंक्शन (LAG/LEAD)।
  • हर पंक्ति की तुलना किसी समूह एग्रीगेट से: सहसंबद्ध सबक्वेरी या विंडो एग्रीगेट।

त्वरित जाँच

आपको ऐसे उत्पादों का हर अद्वितीय युग्म चाहिए जिनकी श्रेणी समान हो, जिसमें कोई उत्पाद स्वयं के साथ न जोड़ा जाए और क्रम बदलने पर डुप्लिकेट युग्म न बनें।

पुनरावलोकन: एक तालिका के भीतर पंक्तियों की तुलना

मुख्य बातें:

  • डुप्लिकेट खोजने और एक ही समूह के संयोजन बनाने के लिए तालिका को स्वयं से जोड़कर उसकी अपनी पंक्तियों के युग्म बनाइए।
  • एक ही शर्त में स्वयं से बने युग्म और उलटे क्रम वाले डुप्लिकेट हटाने के लिए a.id < b.id का उपयोग करें।
  • अंतराल होने पर सेल्फ़-जॉइन से सन्निकट पंक्तियों की तुलना टूट जाती है; पिछली/अगली पंक्ति के तर्क के लिए LAG/LEAD को प्राथमिकता दें।
  • गैर-अद्वितीय स्तंभों पर जोड़ते समय पंक्तियों के फैलाव को हमेशा ध्यान में रखें।
शुरुआत निःशुल्क

एआई शिक्षक के साथ कोडिंग साक्षात्कार की तैयारी सीखें — निःशुल्क

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

पाठ्यक्रम
90
पाठ
360

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

क्या “एक तालिका के भीतर ROW की तुलना” पाठ निःशुल्क है?

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

“एक तालिका के भीतर ROW की तुलना” में मैं क्या सीखूँगा?

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

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

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

“एक तालिका के भीतर ROW की तुलना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. CROSS JOIN और कार्तीय गुणनफल
  2. पदानुक्रमों के लिए SELF JOIN
  3. एक तालिका के भीतर ROW की तुलना
  4. सही JOIN प्रकार चुनना
← कोडिंग साक्षात्कार की तैयारी पर वापस जाएँ