SQL Academy · पाठ

ROW_NUMBER, RANK, DENSE_RANK

partitions के भीतर rows को number और rank दीजिए और ties के लिए सही ranking function चुनिए।

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

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

संख्या देने वाले तीन फ़ंक्शन

तीन विंडो फ़ंक्शन, जो किसी विभाजन के भीतर पंक्तियों को संख्या देते हैं:

  • ROW_NUMBER() — 1, 2, 3, 4 (हमेशा अद्वितीय)
  • RANK() — 1, 2, 2, 4 (समान मानों को एक ही स्थान, फिर अंतर)
  • DENSE_RANK() — 1, 2, 2, 3 (समान मानों को एक ही स्थान, कोई अंतर नहीं)

ROW_NUMBER

हर विभाजन के भीतर 1, 2, 3 देता है। समान मानों का क्रम मनमाने ढंग से तय होता है — निश्चित परिणाम के लिए ORDER BY में समानता तोड़ने वाला स्तंभ दें:

SELECT id, user_id, total,
       ROW_NUMBER() OVER (
         PARTITION BY user_id ORDER BY total DESC, id
       ) AS rn
FROM orders;

प्रति समूह शीर्ष-N

ROW_NUMBER का पारंपरिक उपयोग:

WITH ranked AS (
  SELECT *,
         ROW_NUMBER() OVER (
           PARTITION BY user_id ORDER BY total DESC
         ) AS rn
  FROM orders
)
SELECT * FROM ranked WHERE rn <= 3;
-- Each user's top 3 orders.

RANK

समान ORDER BY मान वाली पंक्तियों को समान स्थान मिलता है; अगला अलग मान उस अंतर को छोड़ देता है:

-- totals: 100, 90, 90, 70
-- RANK:    1,   2,  2,  4    (skipped 3)
SELECT id, total,
       RANK() OVER (ORDER BY total DESC) AS rk
FROM orders;

DENSE_RANK

RANK जैसा, लेकिन अंतर के बिना:

-- totals: 100, 90, 90, 70
-- DENSE:   1,   2,  2,  3
SELECT id, total,
       DENSE_RANK() OVER (ORDER BY total DESC) AS dr
FROM orders;

इनमें से चुनाव करना

  • अद्वितीय संख्याएँ चाहिए (जैसे, पृष्ठांकन)? ROW_NUMBER
  • पारंपरिक "समान स्थान, अगली संख्या में अंतर" वाला क्रम चाहिए? RANK
  • "समान स्थान, अगला अगला ही हो" वाला क्रम चाहिए? DENSE_RANK

NTILE: N-मात्रिक खंड

NTILE(n) पंक्तियों को लगभग समान आकार वाले n खंडों में बाँटता है:

SELECT id, total,
       NTILE(4) OVER (ORDER BY total) AS quartile
FROM orders;
-- 1 = bottom 25%, 4 = top 25%

दोहराई गई पंक्तियाँ हटाना

हर दोहराव वाले समूह में एक पंक्ति रखने के लिए ROW_NUMBER + DELETE का उपयोग करें:

WITH dups AS (
  SELECT id,
         ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn
  FROM users
)
DELETE FROM users WHERE id IN (SELECT id FROM dups WHERE rn > 1);

प्रति समूह पृष्ठांकन

"हर उपयोगकर्ता के ऑर्डर, प्रति पृष्ठ 5" का पृष्ठ 2:

WITH r AS (
  SELECT id, user_id,
         ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY created_at DESC) AS rn
  FROM orders
)
SELECT * FROM r WHERE rn BETWEEN 6 AND 10;

PERCENT_RANK और CUME_DIST

विभाजन में सापेक्ष स्थिति:

SELECT id, total,
       PERCENT_RANK() OVER (ORDER BY total) AS pct_rank,
       CUME_DIST()    OVER (ORDER BY total) AS cume_dist
FROM orders;

प्रदर्शन

संख्या देने वाले फ़ंक्शन को हर विभाजन के भीतर क्रमबद्ध इनपुट चाहिए। (partition_col, order_col) पर अनुक्रमणिका क्रमबद्ध करने का चरण हटा सकती है।

पुनरावलोकन

तीन संख्या देने वाले फ़ंक्शन अधिकांश आवश्यकताओं को पूरा करते हैं।

  • अद्वितीयता के लिए ROW_NUMBER
  • समान मानों वाले क्रम के लिए RANK / DENSE_RANK
  • मात्रिक खंडों के लिए NTILE

त्वरित जाँच

कुल मान 100, 90, 90, 70 दिए गए हैं। DENSE_RANK कौन-सा परिणाम देगा?

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

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

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

पाठ्यक्रम
46
पाठ
183

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

क्या “ROW_NUMBER, RANK, DENSE_RANK” पाठ निःशुल्क है?

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

“ROW_NUMBER, RANK, DENSE_RANK” में मैं क्या सीखूँगा?

partitions के भीतर rows को number और rank दीजिए और ties के लिए सही ranking function चुनिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

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

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

“ROW_NUMBER, RANK, DENSE_RANK” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. OVER, PARTITION BY, ORDER BY
  2. ROW_NUMBER, RANK, DENSE_RANK
  3. LAG, LEAD और Time-Series Patterns
  4. Running Totals और Moving Averages
← SQL Academy पर वापस जाएँ