शीर्ष-N में टाई संभालना
जानें कि बराबर ROW को सभी शामिल करने के लिए RANK या DENSE_RANK कब उपयोग करें
शीर्ष-N में टाई संभालना, CoddyKit पर कोडिंग साक्षात्कार की तैयारी का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह कोडिंग साक्षात्कार की तैयारी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
टाई पर आगे का प्रश्न
जब आप ROW_NUMBER से शीर्ष-N निकालना अच्छी तरह सीख लेते हैं, तो साक्षात्कारकर्ता अगला पेचीदा सवाल पूछता है: “यदि सीमा पर दो कर्मचारियों का वेतन बिल्कुल समान हो, तो क्या दोनों को शामिल करना चाहिए?”
इससे पता चलता है कि किस अभ्यर्थी ने केवल एक क्वेरी याद की है और कौन क्रम निर्धारण के अर्थ को समझता है। उत्तर ROW_NUMBER, RANK और DENSE_RANK में से सही विकल्प चुनने पर निर्भर करता है। यह पाठ प्रत्येक फ़ंक्शन को उसके व्यावसायिक उद्देश्य से जोड़ता है।
ROW_NUMBER टाई छिपा देता है
ROW_NUMBER प्रत्येक पंक्ति को कड़ाई से अद्वितीय पूर्णांक देता है। क्रम वाले कॉलम में दो पंक्तियाँ समान होने पर भी, किसी मनमाने क्रम में एक को 2 और दूसरी को 3 मिलता है।
परिणाम: WHERE rn <= 3 की छनाई ठीक 3 पंक्तियाँ लौटाती है और ऐसी समान पंक्ति को चुपचाप हटा सकती है जिसे शामिल किया जाना चाहिए था। जब आपको सचमुच निश्चित संख्या चाहिए, तब यह ठीक है; लेकिन जब सभी समान पंक्तियाँ पात्र होनी चाहिएँ, तब यह गलत है।
-- Salaries: 100, 90, 90, 80
-- ROW_NUMBER -> 1, 2, 3, 4 (the two 90s get 2 and 3 arbitrarily)
ROW_NUMBER() OVER (ORDER BY salary DESC)RANK अंतर छोड़ देता है
RANK समान पंक्तियों को समान क्रम देता है, फिर समानता को ध्यान में रखते हुए अगले मानों को छोड़ देता है। क्रम 2 पर समान दो पंक्तियों को 2 मिलता है और अगली पंक्ति का क्रम 4 हो जाता है, 3 नहीं।
RANK का उपयोग तब करें जब आपको “शीर्ष 3 स्थान” चाहिए और एक स्थान पर कई लोग हो सकते हैं। यह वास्तविक प्रतियोगिता की स्थिति जैसा है, जहाँ दो रजत पदक विजेता होने पर कांस्य पदक नहीं मिलता।
-- Salaries: 100, 90, 90, 80
-- RANK -> 1, 2, 2, 4 (rank 3 is skipped)
RANK() OVER (ORDER BY salary DESC)DENSE_RANK में कोई अंतर नहीं होता
DENSE_RANK भी समान पंक्तियों को समान क्रम देता है, लेकिन उसके बाद कोई क्रम नहीं छोड़ता। क्रम 2 पर समान दो पंक्तियों को 2 मिलता है और अगला अलग मान 3 होता है।
जब प्रश्न अलग-अलग मानों के बारे में हो, तब DENSE_RANK का उपयोग करें: “सबसे अधिक वेतन के 3 अलग स्तर” या “शीर्ष 3 मूल्य-श्रेणियाँ”। यह पंक्तियों की नहीं, अद्वितीय मानों की गिनती करता है।
-- Salaries: 100, 90, 90, 80
-- DENSE_RANK -> 1, 2, 2, 3 (no gap)
DENSE_RANK() OVER (ORDER BY salary DESC)साथ-साथ तुलना
100, 90, 90, 80 वाली वेतन सूची के लिए तीनों फ़ंक्शन यह परिणाम देते हैं:
- ROW_NUMBER: 1, 2, 3, 4
- RANK: 1, 2, 2, 4
- DENSE_RANK: 1, 2, 2, 3
इस सारणी को पूरी तरह याद कर लेना उपयोगी है। साक्षात्कारकर्ता आपसे किसी दी गई सूची के लिए इसे भरने को कह सकते हैं, और अंतर छोड़ने के व्यवहार को सही समझना ही इसका मुख्य उद्देश्य है।
SELECT salary,
ROW_NUMBER() OVER (ORDER BY salary DESC) AS rn,
RANK() OVER (ORDER BY salary DESC) AS rnk,
DENSE_RANK() OVER (ORDER BY salary DESC) AS drnk
FROM employees;RANK से सभी समान पंक्तियाँ शामिल करें
“शीर्ष 3, लेकिन सीमा पर समान सभी लोगों को शामिल करें” का उत्तर देने के लिए RANK() <= 3 पर छनाई लगाएँ। यदि दो लोगों का क्रम 3 समान है, तो दोनों दिखाई देंगे, इसलिए परिणाम में 3 से अधिक पंक्तियाँ हो सकती हैं।
“कोई भी 3 पंक्तियाँ” के बजाय “शीर्ष 3 स्थान” कहे गए प्रश्नों का आशय यही होता है। स्पष्ट रूप से बताएं कि समानता होने पर पंक्तियों की संख्या N से अधिक हो सकती है।
WITH ranked AS (
SELECT name, department, salary,
RANK() OVER (
PARTITION BY department ORDER BY salary DESC
) AS rnk
FROM employees
)
SELECT name, department, salary, rnk
FROM ranked
WHERE rnk <= 3
ORDER BY department, rnk;DENSE_RANK से शीर्ष-3 अलग स्तर
जब आवश्यकता “वेतन के शीर्ष 3 अलग स्तर” पाने की हो और आप उन तीनों स्तरों पर मौजूद हर कर्मचारी को शामिल करना चाहते हों, तो DENSE_RANK() <= 3 का उपयोग करें।
इससे बहुत-सी पंक्तियाँ लौट सकती हैं: शीर्ष तीन वेतन-श्रेणियों के सभी कर्मचारी, चाहे उन श्रेणियों में कितने भी लोग हों। मुख्य बात यह है कि DENSE_RANK अलग-अलग मानों की गिनती करता है, इसलिए छनाई निश्चित संख्या में पंक्तियों के बजाय मान-श्रेणियों का चयन करती है।
WITH ranked AS (
SELECT name, salary,
DENSE_RANK() OVER (ORDER BY salary DESC) AS drnk
FROM employees
)
SELECT name, salary, drnk
FROM ranked
WHERE drnk <= 3
ORDER BY drnk;निर्णय-मार्गदर्शिका
प्रश्न के शब्दों को सही फ़ंक्शन से जोड़ें:
- “ठीक N पंक्तियाँ” या पृष्ठांकन →
ROW_NUMBER(टाई-ब्रेकर जोड़ें)। - “शीर्ष N स्थान, समान लोगों का स्थान समान हो” →
RANK। - “शीर्ष N अलग मान / स्तर / श्रेणियाँ” →
DENSE_RANK।
जब विनिर्देश अस्पष्ट हो, तो पूछें: “यदि सीमा पर समानता हो, तो क्या मुझे सभी समान पंक्तियाँ शामिल करनी चाहिए या संख्या N तक सीमित रखनी चाहिए?” यह स्पष्टता माँगने वाला प्रश्न अपने आप में अंक दिलाता है।
टाई-ब्रेकर अब भी महत्वपूर्ण हैं
RANK या DENSE_RANK के साथ भी द्वितीयक ORDER BY कुंजी जोड़ने से समान पंक्तियों का प्रदर्शन क्रम नियंत्रित होता है और परिणाम स्थिर रहता है। इससे पात्र पंक्तियाँ नहीं बदलतीं, लेकिन परिणामों को दोहराने योग्य बनाया जाता है।
ROW_NUMBER के साथ टाई-ब्रेकर आवश्यक है, क्योंकि यही तय करता है कि rn की सीमा पर समान पंक्तियों में से कौन-सी बचेगी।
RANK() OVER (
PARTITION BY department
ORDER BY salary DESC, name ASC
) AS rnkउदाहरण: शीर्ष स्कोर वाले
game_scores सारणी में player और score हैं। साक्षात्कारकर्ता “शीर्ष 2 स्कोर वाले स्थानों पर मौजूद सभी खिलाड़ियों” को चाहता है। प्रथम स्थान पर बराबरी होने पर दो खिलाड़ी स्थान 1 पर होंगे, फिर अगला अलग स्कोर स्थान 2 पर होगा।
समानता के बाद स्थान न छोड़ने वाला “स्थान” DENSE_RANK की ओर संकेत करता है। यदि वे इसके बजाय “अंतर वाले शीर्ष 2 स्थान” कहते, तो आप RANK का उपयोग करते। प्रश्न के सटीक शब्दों पर ध्यान दें।
WITH r AS (
SELECT player, score,
DENSE_RANK() OVER (ORDER BY score DESC) AS pos
FROM game_scores
)
SELECT player, score, pos
FROM r
WHERE pos <= 2
ORDER BY pos, player;इन सामान्य गलतियों से बचें
साक्षात्कारकर्ता इन गलतियों पर ध्यान देते हैं:
- जब प्रश्न समान पंक्तियों को शामिल करना चाहता हो, तब
ROW_NUMBERका उपयोग करना और पात्र पंक्ति को चुपचाप हटा देना। RANKऔरDENSE_RANKके अंतर छोड़ने वाले व्यवहार को लेकर भ्रमित होना।- यह भूल जाना कि
RANK/DENSE_RANKकी छनाई N से अधिक पंक्तियाँ लौटा सकती है और फिर परिणाम को गलत कहना। - जब शीर्ष-N प्रत्येक समूह के लिए हो, तब
PARTITION BYछोड़ देना और पूरे सारणी का क्रम तय कर देना।
त्वरित जाँच
वर्णित बराबरी की स्थिति के लिए सही रैंकिंग फ़ंक्शन चुनिए।
पुनरावलोकन: बराबरी संभालना
तीन फ़ंक्शन, बराबरी के तीन व्यवहार:
- ROW_NUMBER: हमेशा अद्वितीय, ठीक N पंक्तियाँ, बराबरियों का मनमाने ढंग से निपटारा।
- RANK: बराबरियाँ एक रैंक साझा करती हैं, फिर अंतराल आते हैं।
- DENSE_RANK: बराबरियाँ एक रैंक साझा करती हैं, कोई अंतराल नहीं होता और अलग-अलग मानों की गिनती होती है।
प्रश्न की शब्दावली के अनुसार चुनिए, अस्पष्टता होने पर स्पष्टीकरण वाला प्रश्न पूछिए, और याद रखिए कि RANK/DENSE_RANK के फ़िल्टर जानबूझकर N से अधिक पंक्तियाँ लौटा सकते हैं।
एआई शिक्षक के साथ कोडिंग साक्षात्कार की तैयारी सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 90
- पाठ
- 360
अक्सर पूछे जाने वाले प्रश्न
क्या “शीर्ष-N में टाई संभालना” पाठ निःशुल्क है?
हाँ—“शीर्ष-N में टाई संभालना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“शीर्ष-N में टाई संभालना” में मैं क्या सीखूँगा?
जानें कि बराबर ROW को सभी शामिल करने के लिए RANK या DENSE_RANK कब उपयोग करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ कोडिंग साक्षात्कार की तैयारी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या कोडिंग साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर कोडिंग साक्षात्कार की तैयारी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“शीर्ष-N में टाई संभालना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस कोडिंग साक्षात्कार की तैयारी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर कोडिंग साक्षात्कार की तैयारी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- ROW_NUMBER से प्रति समूह शीर्ष-N ROW
- शीर्ष-N में टाई संभालना
- ROW से डुप्लिकेट सुरक्षित रूप से हटाना
- प्रति कुंजी नवीनतम ROW रखना