एसक्यूएल लीड फ़ंक्शन

Esakyu Ela Lida Fanksana



SQL लीड() फ़ंक्शन आपको एक विशिष्ट ऑफसेट पर वर्तमान पंक्ति से अगली पंक्ति तक पहुंचने की अनुमति देता है। संक्षेप में, लीड() फ़ंक्शन आपको वर्तमान पंक्ति से अगली पंक्ति तक पहुंचने की अनुमति देता है। ऑफसेट मान निर्दिष्ट करके, आप वर्तमान से अगली 1, 2, 3, आदि पंक्तियों तक पहुंच सकते हैं।

यह लैग() फ़ंक्शन के विपरीत है जो आपको पिछली पंक्तियों तक पहुंचने की अनुमति देता है।







एसक्यूएल लीड() फ़ंक्शन

फ़ंक्शन सिंटैक्स इस प्रकार है:



लीड(मान_अभिव्यक्ति, ऑफसेट [, डिफ़ॉल्ट])
ऊपर (
[विभाजन_अभिव्यक्ति द्वारा विभाजन]
Sort_expression द्वारा ऑर्डर करें [एएससी | डीईएससी]
);

निम्नलिखित समर्थित तर्क हैं:



  1. मूल्य_अभिव्यक्ति - यह पिछली पंक्ति का रिटर्न मान निर्दिष्ट करता है। अभिव्यक्ति का मूल्यांकन एक ही मान पर होना चाहिए।
  2. ओफ़्सेट - यह निर्दिष्ट करता है कि वर्तमान पंक्ति से कितनी पंक्तियों तक पहुंच प्राप्त की जा सकती है।
  3. गलती करना - यदि ऑफसेट विभाजन के दायरे से बाहर है तो यह डिफ़ॉल्ट मान सेट करता है। डिफ़ॉल्ट रूप से, मान NULL पर सेट है।
  4. द्वारा विभाजन - यह निर्दिष्ट करता है कि डेटा को कैसे विभाजित किया जाए।
  5. द्वारा आदेश - यह प्रत्येक विभाजन में पंक्तियों के लिए ऑर्डर प्रारूप निर्धारित करता है।

नमूना डेटा सेटअप

इससे पहले कि हम लीड() फ़ंक्शन के कामकाज में उतरें, आइए प्रदर्शन उद्देश्यों के लिए मूल तालिका स्थापित करके शुरुआत करें।





टेबल उत्पाद बनाएं (
product_id INT प्राथमिक कुंजी AUTO_INCREMENT,
उत्पाद_नाम VARCHAR(255),
श्रेणी वर्चर(255),
मूल्य दशमलव(10, 2),
मात्रा INT,
समाप्ति तिथि दिनांक,
बारकोड BIGINT
);

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ('शेफ हैट 25 सेमी',
'बेकरी',
24.67,
57,
'2023-09-09',
2854509564204);

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ('बटेर अंडे - डिब्बाबंद',
'पेंट्री',
17.99,
67,
'2023-09-29',
1708039594250);

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ('कॉफ़ी - एग नॉग कैपुचीनो',
'बेकरी',
92.53,
10,
'2023-09-22',
8704051853058);

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ('नाशपाती - कांटेदार',
'बेकरी',
65.29,
48,
'2023-08-23',
5174927442238);

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ('पास्ता - एंजेल हेयर',
'पेंट्री',
48.38,
59,
'2023-08-05',
8008123704782);

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ('वाइन - प्रोसेको वाल्डोबियाडीन',
'उत्पादन करना',
44.18,
3,
'2023-03-13',
6470981735653);

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ('पेस्ट्री - फ्रेंच मिनी मिश्रित',
'पेंट्री',
36.73,
52,
'2023-05-29',
5963886298051);

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ('नारंगी - डिब्बाबंद, मंदारिन',
'उत्पादन करना',
65.0,
1,
'2023-04-20',
6131761721332);

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)
मान ('पोर्क - कंधा',
'उत्पादन करना',
55.55,
73,
'2023-05-01',
9343592107125);

डालना
में
उत्पाद (उत्पाद_नाम,
वर्ग,
कीमत,
मात्रा,
समाप्ति तिथि,
बारकोड)

मान ('डीसी हिकिएज हीरा हुबा',
'उत्पादन करना',
56.29,
53,
'2023-04-14',
3354910667072);

उदाहरण 1:

इस मामले में, हमारे पास 'उत्पाद' तालिका तक पहुंच है जिसमें उत्पाद की जानकारी शामिल है। मान लीजिए हम वर्तमान पंक्ति से अगला बार कोड प्राप्त करना चाहते हैं।

हम लीड() फ़ंक्शन का उपयोग इस प्रकार कर सकते हैं:



मान लीजिए कि हमारे पास एक तालिका है जिसमें कर्मचारी की जानकारी इस प्रकार है:

चुनना
प्रोडक्ट का नाम,
कीमत,
लीड (बारकोड) ओवर (श्रेणी के अनुसार विभाजन)।
द्वारा आदेश
मूल्य एएससी) अगले_आइटम के रूप में
से
उत्पाद पी;

दिया गया कोड श्रेणी के आधार पर डेटा को विभाजित करता है। इसके बाद यह लीड() फ़ंक्शन का उपयोग करके विभाजन में अगला बारकोड लाता है।

परिणामी आउटपुट इस प्रकार है:

उदाहरण 2:

यदि किसी विशिष्ट कॉलम (बाउंड से बाहर) में कोई अगली पंक्ति नहीं है, तो फ़ंक्शन मान को NULL पर सेट करता है जैसा कि पिछले उदाहरण में दिखाया गया है।

किसी भी आउट-ऑफ़-स्कोप एक्सेस के लिए डिफ़ॉल्ट मान सेट करने के लिए, हम निम्नलिखित कार्य कर सकते हैं:

चुनना
प्रोडक्ट का नाम,
कीमत,
लीड(बारकोड, 1, 'एन/ए') ओवर (श्रेणी के अनुसार विभाजन)।
द्वारा आदेश
मूल्य एएससी) अगले_आइटम के रूप में
से
उत्पाद पी;

हमने डिफ़ॉल्ट मान को 'एन/ए' पर सेट किया है। इसे किसी भी आउट-ऑफ़-बाउंड मान को प्रतिस्थापित करना चाहिए जैसा कि निम्नलिखित आउटपुट में दिखाया गया है:

टिप्पणी : ऑफसेट को 1 पर सेट करना किसी भी मान को निर्दिष्ट न करने के समान है।

उदाहरण 3:

मान लीजिए आप वर्तमान पंक्ति से अगली दो पंक्तियों तक पहुंचना चाहते हैं। हम ऑफसेट मान को 2 पर सेट करके ऐसा कर सकते हैं।

एक उदाहरण क्वेरी निम्नलिखित में चित्रित की गई है:

चुनना
प्रोडक्ट का नाम,
कीमत,
लीड(बारकोड, 2, 'एन/ए') ओवर (श्रेणी के अनुसार विभाजन)।
द्वारा आदेश
मूल्य एएससी) अगले_आइटम के रूप में
से
उत्पाद पी;

यह क्वेरी प्रत्येक विभाजन में अगली दो पंक्तियाँ लौटाती है जैसा कि निम्नलिखित में दिखाया गया है:

ये लो!

निष्कर्ष

इस ट्यूटोरियल में, हमने सीखा कि वर्तमान पंक्ति से अगला आइटम प्राप्त करने के लिए लीड() फ़ंक्शन के साथ कैसे काम करें।