ایس کیو ایل لیگ

Ays Kyw Ayl Lyg



SQL lag() فنکشن آپ کو ایک مخصوص آفسیٹ پر موجودہ قطار سے پچھلی قطار تک رسائی کی اجازت دیتا ہے۔ مختصر میں، lag() فنکشن آپ کو موجودہ قطار سے پچھلی قطار تک رسائی کی اجازت دیتا ہے۔ آفسیٹ ویلیو بتا کر، آپ موجودہ سے پچھلی 1، 2، 3، وغیرہ تک رسائی حاصل کر سکتے ہیں۔

یہ لیڈ() فنکشن کے برعکس ہے جو آپ کو بعد کی قطاروں تک رسائی کی اجازت دیتا ہے۔







SQL Lag()

فنکشن نحو مندرجہ ذیل ہے:



LAG(value_expression, offset [, default])
اوور (
[PARTITION BY partition_expression]
ترتیب_اظہار کے لحاظ سے ترتیب دیں [ASC | DESC]
);

مندرجہ ذیل تائید شدہ دلائل ہیں:



  • قدر_اظہار - یہ پچھلی قطار کی واپسی کی قیمت کی وضاحت کرتا ہے۔ اظہار کا ایک واحد قدر سے جائزہ لینا چاہیے۔
  • آفسیٹ - یہ بتاتا ہے کہ رسائی کے لیے موجودہ قطار سے کتنی قطاریں پیچھے ہیں۔
  • پہلے سے طے شدہ - اگر آفسیٹ پارٹیشن کے دائرہ کار سے باہر ہے تو یہ ڈیفالٹ ویلیو سیٹ کرتا ہے۔ پہلے سے طے شدہ طور پر، قدر NULL پر سیٹ ہوتی ہے۔
  • کی طرف سے تقسیم - یہ بتاتا ہے کہ ڈیٹا کو کیسے تقسیم کیا جائے۔
  • بذریعہ آرڈر کریں۔ - یہ ہر پارٹیشن میں قطاروں کے لیے آرڈر فارمیٹ سیٹ کرتا ہے۔

نمونہ ڈیٹا سیٹ اپ

اس سے پہلے کہ ہم lag() فنکشن کے کام میں غوطہ لگائیں، آئیے مظاہرے کے مقاصد کے لیے ایک بنیادی ٹیبل ترتیب دے کر شروع کریں۔





ٹیبل پروڈکٹس بنائیں (
پروڈکٹ_آئی ڈی بنیادی کلیدی آٹو_INCREMENT،
پروڈکٹ_نام VARCHAR(255)،
زمرہ VARCHAR(255)،
قیمت اعشاریہ (10، 2)،
مقدار INT،
میعاد ختم ہونے کی_تاریخ DATE،
بارکوڈ بڑا
);

داخل کریں
میں
مصنوعات (پروڈکٹ_نام،
قسم،
قیمت،
مقدار،
میعاد ختم ہونے کی_تاریخ،
بارکوڈ)
اقدار ('شیف ہیٹ 25 سینٹی میٹر'،
'بیکری'،
24.67،
57،
'09-09-2023'،
2854509564204);

داخل کریں
میں
مصنوعات (پروڈکٹ_نام،
قسم،
قیمت،
مقدار،
میعاد ختم ہونے کی_تاریخ،
بارکوڈ)
اقدار ('بٹیر کے انڈے - ڈبے میں بند'،
'پینٹری'،
17.99،
67،
'29-09-2023'،
1708039594250);

داخل کریں
میں
مصنوعات (پروڈکٹ_نام،
قسم،
قیمت،
مقدار،
میعاد ختم ہونے کی_تاریخ،
بارکوڈ)
اقدار ('کافی - انڈے نوگ کیپوچینو'،
'بیکری'،
92.53،
10،
'22-09-2023'،
8704051853058);

داخل کریں
میں
مصنوعات (پروڈکٹ_نام،
قسم،
قیمت،
مقدار،
میعاد ختم ہونے کی_تاریخ،
بارکوڈ)
اقدار ('ناشپاتی - کانٹے دار'،
'بیکری'،
65.29،
48،
'23-08-2023'،
5174927442238);

داخل کریں
میں
مصنوعات (پروڈکٹ_نام،
قسم،
قیمت،
مقدار،
میعاد ختم ہونے کی_تاریخ،
بارکوڈ)
اقدار ('پاستا - فرشتہ ہیئر'،
'پینٹری'،
48.38،
59،
'05-08-2023'،
8008123704782);

داخل کریں
میں
مصنوعات (پروڈکٹ_نام،
قسم،
قیمت،
مقدار،
میعاد ختم ہونے کی_تاریخ،
بارکوڈ)
اقدار ('شراب - پراسیکو والڈوبیڈین'،
'پیداوار'،
44.18،

'13-03-2023'،
6470981735653);

داخل کریں
میں
مصنوعات (پروڈکٹ_نام،
قسم،
قیمت،
مقدار،
میعاد ختم ہونے کی_تاریخ،
بارکوڈ)
اقدار ('پیسٹری - فرانسیسی منی مختلف'،
'پینٹری'،
36.73،
52،
'29-05-2023'،
5963886298051);

داخل کریں
میں
مصنوعات (پروڈکٹ_نام،
قسم،
قیمت،
مقدار،
میعاد ختم ہونے کی_تاریخ،
بارکوڈ)
اقدار ('اورنج - ڈبہ بند، مینڈارن'،
'پیداوار'،
65.0،

'2023-04-20'،
6131761721332);

داخل کریں
میں
مصنوعات (پروڈکٹ_نام،
قسم،
قیمت،
مقدار،
میعاد ختم ہونے کی_تاریخ،
بارکوڈ)
اقدار ('سور کا گوشت - کندھے'،
'پیداوار'،
55.55،
73،
'01-05-2023'،
9343592107125);

داخل کریں
میں
مصنوعات (پروڈکٹ_نام،
قسم،
قیمت،
مقدار،
میعاد ختم ہونے کی_تاریخ،
بارکوڈ)
اقدار ('Dc Hikiage Hira Huba'،
'پیداوار'،
56.29،
53،
'2023-04-14'،
3354910667072);

ڈیٹا کی تخلیق اور سیٹ اپ مکمل ہونے کے ساتھ، آئیے چند مثالوں پر بات کرتے ہیں۔

مثال 1: بنیادی استعمال

اس صورت میں، ہمارے پاس ایک 'مصنوعات' ٹیبل تک رسائی ہے جس میں پروڈکٹ کی معلومات ہوتی ہیں۔ فرض کریں کہ ہم موجودہ قطار سے پچھلا بارکوڈ حاصل کرنا چاہتے ہیں۔



ہم lag() فنکشن کو اس طرح استعمال کر سکتے ہیں:

منتخب کریں
پروڈکٹ کا نام،
قیمت،
وقفہ (بار کوڈ) اوور (زمرہ کے لحاظ سے تقسیم
کی طرف سے حکم
قیمت asc) بطور سابقہ_آئٹم
سے
مصنوعات p؛

دیا گیا کوڈ زمرہ کی بنیاد پر ڈیٹا کو تقسیم کرتا ہے۔ اس کے بعد lag() فنکشن کا استعمال کرتے ہوئے پارٹیشن میں پچھلا بارکوڈ حاصل کرتا ہے۔

نتیجے کی پیداوار مندرجہ ذیل ہے:

مثال 2: ڈیفالٹ ویلیو سیٹ کرنا

اگر کسی مخصوص کالم میں کوئی پچھلی قطار نہیں ہے (حد سے باہر)، فنکشن قدر کو NULL پر سیٹ کرتا ہے جیسا کہ پچھلی مثال میں دکھایا گیا ہے۔

دائرہ سے باہر کسی بھی رسائی کے لیے ڈیفالٹ ویلیو سیٹ کرنے کے لیے، ہم درج ذیل کام کر سکتے ہیں:

منتخب کریں
پروڈکٹ کا نام،
قیمت،
وقفہ (بار کوڈ، 1، 'N/A') اوور (زمرہ کے لحاظ سے تقسیم
کی طرف سے حکم
قیمت asc) بطور سابقہ_آئٹم
سے
مصنوعات p؛

ہم ڈیفالٹ ویلیو کو 'N/A' پر سیٹ کرتے ہیں۔ اسے آؤٹ پٹ میں دکھایا گیا کسی بھی حد سے باہر والی قدر کو تبدیل کرنا چاہئے:

مثال 3: حسب ضرورت آفسیٹ ویلیو

فرض کریں کہ آپ موجودہ قطار سے پچھلی دو قطاروں تک رسائی حاصل کرنا چاہتے ہیں۔ ہم آفسیٹ ویلیو کو 2 پر سیٹ کر کے ایسا کر سکتے ہیں۔

ایک مثال کے سوال کو درج ذیل میں بیان کیا گیا ہے:

منتخب کریں
پروڈکٹ کا نام،
قیمت،
وقفہ (بار کوڈ، 2، 'N/A') اوور (زمرہ کے لحاظ سے تقسیم
کی طرف سے حکم
قیمت asc) بطور سابقہ_آئٹم
سے
مصنوعات p؛

آؤٹ پٹ:

یہ استفسار ہر پارٹیشن میں پچھلی دو قطاریں لوٹاتا ہے۔

نتیجہ

اس ٹیوٹوریل میں، ہم نے سیکھا کہ موجودہ قطار سے پچھلی آئٹم حاصل کرنے کے لیے lag() فنکشن کے ساتھ کیسے کام کرنا ہے۔