SQL Academy · पाठ

श्रृंखला और अनुक्रम बनाना

रिकर्शन से पंक्तियाँ बनाएँ।

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

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

उत्पन्न शृंखला क्या है

कभी-कभी आपको संख्याओं, तिथियों या अन्य क्रमिक मानों की ऐसी सूची चाहिए होती है, जो किसी भी सारणी में मौजूद नहीं होती। एसक्यूएल आपको पुनरावृत्ति या अंतर्निहित फ़ंक्शन का उपयोग करके इन्हें तुरंत बनाने देता है।

इस पाठ में आप WITH RECURSIVE का उपयोग करके अनुक्रम बनाना सीखेंगे — यह एक शक्तिशाली साधन है, जो किसी क्वेरी को अपने ही आउटपुट का संदर्भ देने देता है।

आपका पहला पुनरावर्ती CTE

एक पुनरावर्ती CTE (सामान्य सारणी अभिव्यक्ति) के दो भाग होते हैं, जिन्हें UNION ALL जोड़ता है: एक आधार स्थिति, जो पहली पंक्ति बनाती है, और एक पुनरावर्ती चरण, जो अगली पंक्ति बनाने के लिए स्वयं CTE का संदर्भ देता है।

जब पुनरावर्ती चरण कोई पंक्ति नहीं लौटाता, तब पुनरावृत्ति रुक जाती है।

WITH RECURSIVE counter(n) AS (
  SELECT 1
  UNION ALL
  SELECT n + 1 FROM counter WHERE n < 5
)
SELECT n FROM counter;

पुनरावृत्ति कैसे चरण-दर-चरण आगे बढ़ती है

हर चरण को अलग-अलग देखना उपयोगी है। आधार स्थिति सारणी को प्रारंभिक पंक्ति देती है, फिर प्रत्येक पुनरावर्ती चक्र एक और पंक्ति जोड़ता है, जब तक कि WHERE शर्त विफल न हो जाए।

WHERE n < 5 वाली क्वेरी के लिए इंजन 1, 2, 3, 4, 5 पंक्तियाँ बनाता है और फिर रुक जाता है, क्योंकि 5 < 5 असत्य है।

WITH RECURSIVE steps(n, note) AS (
  SELECT 1, 'base case'
  UNION ALL
  SELECT n + 1, 'recursive step'
  FROM steps
  WHERE n < 4
)
SELECT n, note FROM steps;

सम संख्याएँ उत्पन्न करना

पुनरावर्ती भाग में 1 से अधिक जोड़कर आप चरण का आकार आसानी से बदल सकते हैं। इससे 2 से 10 तक की हर सम संख्या उत्पन्न होती है।

पैटर्न हमेशा यह होता है: अगला_मान = वर्तमान_मान + चरण।

WITH RECURSIVE evens(n) AS (
  SELECT 2
  UNION ALL
  SELECT n + 2 FROM evens WHERE n < 10
)
SELECT n FROM evens;

उलटी गिनती करना

पुनरावृत्ति केवल बढ़ती गिनती तक सीमित नहीं है। जोड़ने के बजाय घटाएँ और घटते क्रम की शृंखला पाएँ। अनंत चक्र से बचने के लिए सुनिश्चित करें कि रुकने की शर्त में > के बजाय < का उपयोग हो।

WITH RECURSIVE countdown(n) AS (
  SELECT 10
  UNION ALL
  SELECT n - 1 FROM countdown WHERE n > 1
)
SELECT n FROM countdown;

तिथियों की सीमा उत्पन्न करना

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

रिपोर्टों में रिक्तियाँ भरने के लिए यह विशेष रूप से उपयोगी है — हर तिथि दिखाई देती है, भले ही उस दिन कोई डेटा न हो।

WITH RECURSIVE dates(d) AS (
  SELECT DATE '2024-01-01'
  UNION ALL
  SELECT d + INTERVAL '1 day'
  FROM dates
  WHERE d < DATE '2024-01-07'
)
SELECT d FROM dates;

तिथि शृंखला से रिपोर्ट की रिक्तियाँ भरना

मान लीजिए कि sales सारणी में केवल उन्हीं दिनों की पंक्तियाँ हैं, जब बिक्री हुई थी। उत्पन्न तिथि शृंखला को LEFT JOIN के माध्यम से बिक्री सारणी से जोड़ने पर आपको सीमा के भीतर हर दिन मिल जाता है और जिन दिनों बिक्री नहीं हुई, उनके लिए NULL मिलता है।

WITH RECURSIVE cal(d) AS (
  SELECT DATE '2024-03-01'
  UNION ALL
  SELECT d + INTERVAL '1 day' FROM cal WHERE d < DATE '2024-03-05'
),
sales(sale_date, amount) AS (
  VALUES
    (DATE '2024-03-01', 100),
    (DATE '2024-03-03', 250),
    (DATE '2024-03-05', 180)
)
SELECT cal.d, COALESCE(sales.amount, 0) AS amount
FROM cal
LEFT JOIN sales ON cal.d = sales.sale_date
ORDER BY cal.d;

गुणन सारणी उत्पन्न करना

पुनरावर्ती CTE कई स्तंभ साथ ले जा सकती हैं, जिससे अधिक समृद्ध परिणाम बनाए जा सकते हैं। यहाँ एक पंक्ति अनुक्रमांक और एक परिकलित मान, दोनों को एक साथ दर्ज किया जाता है।

WITH RECURSIVE mult(n, result) AS (
  SELECT 1, 1 * 7
  UNION ALL
  SELECT n + 1, (n + 1) * 7
  FROM mult
  WHERE n < 10
)
SELECT n, result AS seven_times_n FROM mult;

फिबोनाची संख्याएँ

फिबोनाची एक प्रसिद्ध शृंखला है, जिसमें हर संख्या उससे पहले की दो संख्याओं का योग होती है: 0, 1, 1, 2, 3, 5, 8 …

एक पुनरावर्ती CTE वर्तमान मान a और अगला मान b, दोनों को दर्ज करता है और हर चरण में उनकी अदला-बदली करता है।

WITH RECURSIVE fib(a, b) AS (
  SELECT 0, 1
  UNION ALL
  SELECT b, a + b FROM fib WHERE a < 100
)
SELECT a AS fibonacci FROM fib;

PostgreSQL में generate_series का उपयोग करना

PostgreSQL में generate_series() नाम की एक अंतर्निहित संक्षिप्त सुविधा है, जो पुनरावर्ती CTE लिखे बिना अनुक्रम बनाती है। इसमें आरंभ, समाप्ति और एक वैकल्पिक चरण दिया जा सकता है।

PostgreSQL में संख्याओं या तिथियों की सीमाएँ बनाने का यह सबसे संक्षिप्त तरीका है।

SELECT gs AS num
FROM generate_series(1, 10, 2) AS gs;

मासिक अंतराल उत्पन्न करना

मासिक कैलेंडर बनाने के लिए '1 month' का अंतराल generate_series() को दें। मासिक रिपोर्ट के शीर्षक बनाने या यह जाँचने के लिए यह बिल्कुल उपयुक्त है कि किन महीनों में कोई डेटा नहीं है।

SELECT gs::DATE AS month_start
FROM generate_series(
  '2024-01-01'::DATE,
  '2024-06-01'::DATE,
  INTERVAL '1 month'
) AS gs;

ज्ञान जाँच

पुनरावर्ती CTE से शृंखला उत्पन्न करने के बारे में अपनी समझ का परीक्षण कीजिए।

पुनरावलोकन: शृंखलाएँ और अनुक्रम उत्पन्न करना

इस पाठ में आपने सीखा कि किसी स्रोत सारणी के बिना संख्याओं और तिथियों के अनुक्रम कैसे बनाए जाते हैं:

  • WITH RECURSIVE — UNION ALL से जुड़े आधार मामले और पुनरावर्ती चरण का संयोजन; पुनरावर्ती चरण के कोई पंक्तियाँ न लौटाने पर रुक जाता है।
  • लचीला चरण आकार — बढ़ती गिनती, उलटी गिनती या मानों को छोड़ने के लिए कोई भी मान जोड़ें या घटाएँ।
  • तिथि सीमाएँ — दैनिक, मासिक या मनमानी कैलेंडर शृंखलाएँ उत्पन्न करने के लिए अंतराल जोड़ें।
  • बहु-स्तंभीय CTE — फिबोनाची जैसे अधिक समृद्ध परिणामों के लिए पुनरावृत्तियों के बीच अतिरिक्त स्थिति साथ ले जाएँ।
  • generate_series() — PostgreSQL में संख्याओं और तिथियों के सबसे संक्षिप्त अनुक्रम बनाने की अंतर्निहित सुविधा।

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

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

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

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

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

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

क्या “श्रृंखला और अनुक्रम बनाना” पाठ निःशुल्क है?

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

“श्रृंखला और अनुक्रम बनाना” में मैं क्या सीखूँगा?

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

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

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

“श्रृंखला और अनुक्रम बनाना” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. रिकर्सिव CTE कैसे काम करते हैं
  2. श्रेणी वृक्ष में आगे बढ़ना
  3. श्रृंखला और अनुक्रम बनाना
  4. अनंत लूप से बचना
← SQL Academy पर वापस जाएँ