तीनों किसी window के भीतर पंक्तियों को नंबर देते हैं। ROW_NUMBER हर पंक्ति को एक अलग क्रमिक नंबर देता है, तो बराबरी मनमाने तरीके से तोड़ी जाती है। RANK बराबरी वाली पंक्तियों को एक ही नंबर देकर आगे छलांग लगा देता है, जिससे 1, 2, 2, 4 बनता है। DENSE_RANK बराबरी वालों को एक ही नंबर देता है पर छलांग नहीं लगाता, जिससे 1, 2, 2, 3 बनता है। deduplication के लिए ROW_NUMBER और असली leaderboard के लिए RANK या DENSE_RANK इस्तेमाल करें।
इंटरव्यूअर यह क्यों पूछते हैं
यह SQL की तेज और साफ जांच है जिसमें गोल मोल बोलने की गुंजाइश नहीं, और व्यावहारिक अमल भी उतना ही मायने रखता है: हर समूह से एक पंक्ति चुनना रोज का काम है और उसके लिए ROW_NUMBER सही औजार है। इंटरव्यूअर यह भी चाहते हैं कि आप देखें कि बराबरी पर ROW_NUMBER तब तक अनिश्चित है जब तक आपके ORDER BY में साफ tiebreaker न हो।
अपना जवाब कैसे स्ट्रक्चर करें
- 1, 2, 2, 4 वाले उदाहरण के साथ हर एक का नंबर देने का व्यवहार बताएं।
- हर function को उस काम से जोड़ें जिसके लिए वह सही है।
- आगाह करें कि बराबरी पर ROW_NUMBER को एक निश्चित tiebreaker चाहिए।
- हर समूह से सबसे नई पंक्ति चुनने का मानक पैटर्न दिखाएं।
उदाहरण जवाब
ROW_NUMBER हमेशा अलग अलग पूर्णांक देता है, तो बराबरी वाली दो पंक्तियों को भी 1 और 2 मिलते हैं, उस क्रम में जिसमें engine का मन हो। RANK दोनों को 1 देता है और फिर 3 पर कूद जाता है। DENSE_RANK दोनों को 1 देता है और 2 से आगे बढ़ता है। व्यवहार में मैं ROW_NUMBER बाकी दोनों से कहीं ज्यादा इस्तेमाल करता हूं, क्योंकि सबसे आम काम deduplication है: partition by customer_id, order by updated_at descending, और जहां row_number बराबर 1 हो वहीं से हर ग्राहक का सबसे नया record ले लें। अगर मैं ऐसी top ten सूची बना रहा हूं जहां बराबरी वालों को एक ही जगह मिलनी चाहिए, तो वह DENSE_RANK है। ROW_NUMBER के साथ पेच निश्चितता का है। अगर दो पंक्तियों का updated_at एक जैसा है, तो आप कौन सी रखते हैं यह हर बार चलाने पर बदल सकता है, और मैंने ठीक इसी वजह से एक dashboard को दो वैल्यू के बीच झिलमिलाते देखा है। इसलिए मैं एक दूसरा sort key जोड़ता हूं, आमतौर पर primary key, ताकि वह स्थिर और दोहराने लायक रहे।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- हर category से top तीन product आप कैसे चुनेंगे?
- अगर दो पंक्तियों की sort वैल्यू एक जैसी हों तो ROW_NUMBER के साथ क्या होता है?
- NTILE इन तीनों से कैसे अलग है?
डेटा एनालिस्ट के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें