ایس کیو ایل قطار نمبر ونڈو فنکشن۔

Mysql Row Number Window Function



مائی ایس کیو ایل کے اندر ، ایک ROW NUMBER () طریقہ تقسیم کے اندر ہر صف کے لیے ایک تاریخی نمبر پر مشتمل ہے۔ یہ صرف کسی قسم کی ونڈو فیچر ہے۔ قطاروں کی شکل 1 سے شروع ہوتی ہے تقسیم کے اندر قطاروں کی شکل سے۔ یاد رکھیں ، ورژن 8.0 سے پہلے ، ایس کیو ایل ROW NUMBER () فنکشن کی اجازت نہیں دیتا تاہم ، یہ ایک سیشن متغیر پیش کرتا ہے جو اس خصوصیت کی نقل کرنے میں مدد کرتا ہے۔ ہم اس گائیڈ کے دوران MySQL ROW NUMBER () فعالیت کے بارے میں مزید سمجھیں گے اور رزلٹ کلیکشن میں ہر صف کے لیے لگاتار نمبر تیار کریں گے۔ MySQL میں ، ROW_NUMBER () طریقوں کو یا تو کامیاب شقوں کے ساتھ استعمال کیا جاتا ہے:

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

نحو:

>> منتخب کریں col_name،ROW_NUMBER()پر( حصہ BY col_name۔، آرڈر بائی۔ col_name) اے ایس صف_نم سے table_name؛

آئیے ایپلی کیشنز سے MySQL کمانڈ لائن کلائنٹ شیل کھولیں اور لاگ ان کرنے کے لیے پاس ورڈ ٹائپ کریں۔









صف نمبر فنکشن پر کام شروع کرنے کے لیے آپ کو ایک نیا ٹیبل بنانا ہوگا یا ڈیفالٹ ٹیبل استعمال کرنا ہوگا۔ جیسا کہ ذیل کی تصویر میں پیش کیا گیا ہے ، ہمارے پاس اسکیما ڈیٹا میں ٹیبل جانور ہیں جس میں کچھ ریکارڈ موجود ہیں۔ آئیے SELECT ہدایات کا استعمال کرتے ہوئے اس کے ریکارڈ لاتے ہیں۔



>> منتخب کریں * سے ڈیٹا .جانور؛





مثال 01: ROW_NUMBER () آرڈر BY شق کا استعمال کرتے ہوئے۔

ہم ایک ہی ٹیبل کا استعمال کرتے ہوئے قطار نمبر فنکشن کی کچھ مثالوں کی وضاحت کریں گے۔ ہم ROW_NUMBER () فنکشن کی مثال لے رہے ہیں جس کے بعد Over () ہے ، جبکہ صرف آرڈر BY شق کا استعمال کرتے ہوئے۔ ہم کالم پرائس آرڈر کے مطابق قطاروں کو نمبر دیتے ہوئے تمام ریکارڈ لے رہے ہیں۔ ہم نے ایک کالم کو row_num کا نام دیا ہے ، جو صف کے نمبروں کو محفوظ کرے گا۔ آئیے ایسا کرنے کے لیے نیچے دی گئی کمانڈ کو آزمائیں۔

>> منتخب کریں *،ROW_NUMBER()پر( آرڈر بائی۔ قیمت) اے ایس صف_نم سے ڈیٹا .جانور؛

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



آئیے کالم ایج کے چھانٹنے کے آرڈر کو استعمال کرتے ہوئے اسی سوال پر عمل کریں جس کے بعد آرڈر بائی شق ہے۔ کالم عمر کے مطابق آؤٹ پٹ دی جائے گی۔

>> منتخب کریں *،ROW_NUMBER()پر( آرڈر بائی۔ عمر۔) اے ایس صف_نم سے ڈیٹا .جانور؛

مثال 02: ROW_NUMBER () PARTITION BY Clause کا استعمال کرتے ہوئے۔

ہم نتائج چیک کرنے کے لیے ROW_NUMBER () استفسار میں صرف PARTITION BY شق کا استعمال کریں گے۔ ہم کالیکٹ کلر کے مطابق ٹیبل کو تقسیم کرتے ہوئے ROW_NUMBER () اور OVER شق کے بعد ریکارڈ لانے کے لیے SELECT سوال کا استعمال کرتے رہے ہیں۔ کمانڈ شیل میں نیچے دی گئی کمانڈ پر عمل کریں۔

>> منتخب کریں *،ROW_NUMBER()پر( حصہ رنگ سے۔) اے ایس صف_نم سے ڈیٹا .جانور؛

آپ نتیجہ میں دیکھ سکتے ہیں کہ رنگوں کی ترتیب کے مطابق قطاروں کی تعداد تقسیم میں تفویض کی گئی ہے۔ جیسا کہ ہمارے پاس کالے رنگ کی 4 اقدار ہیں جو 4 قطاریں لیتی ہیں۔ یہی وجہ ہے کہ اسے 1 سے 4 اور اس کے برعکس چار صف نمبر ملے ہیں۔

اسی مثال کو آزمائیں ، اس بار کالم صنف کے ذریعہ تقسیم کیا گیا۔ جیسا کہ ہم جانتے ہیں ، ہمارے پاس اس جدول میں صرف دو جنسیں ہیں ، اسی وجہ سے 2 پارٹیشنز بنیں گی۔ خواتین 9 صفوں پر قابض ہیں ، اسی وجہ سے اس کی صف نمبر 1 سے 9 تک ہے جبکہ مردوں کی 8 اقدار ہیں ، اسی وجہ سے اس کی 1 سے 8 ہے۔

>> منتخب کریں *،ROW_NUMBER()پر( حصہ جنس کے لحاظ سے۔) اے ایس صف_نم سے ڈیٹا .جانور؛

مثال 03: ROW_NUMBER () PARTITION BY & ORDER BY کا استعمال کرتے ہوئے۔

ہم نے مذکورہ بالا دو مثالیں ایس کیو ایل کمانڈ لائن میں کی ہیں ، اب وقت آگیا ہے کہ ROW_NUMBER () کی مثال ایس کیو ایل ورک بینچ 8.0 میں کریں۔ لہذا ، ایپلی کیشنز سے MySQL ورک بینچ 8.0 کھولیں۔ کام شروع کرنے کے لیے MySQL ورک بینچ کو مقامی میزبان جڑ ڈیٹا بیس سے مربوط کریں۔

MySQL ورک بینچ کے بائیں جانب ، آپ کو سکیما بار ملے گا ، نیویگیٹر کو اڑا دیں۔ اس سکیما بار میں ، آپ کو ڈیٹا بیس کی فہرست مل جائے گی۔ ڈیٹا بیس کی فہرست کے تحت ، آپ کے پاس مختلف میزیں اور ذخیرہ شدہ طریقہ کار ہوں گے ، جیسا کہ آپ نیچے دی گئی تصویر میں دیکھ سکتے ہیں۔ ہمارے ڈیٹا بیس 'ڈیٹا' میں مختلف میزیں ہیں۔ ہم استفسار کے علاقے میں SELECT کمانڈ کا استعمال کرتے ہوئے ٹیبل 'آرڈر 1' کھولیں گے تاکہ اسے ROW_NUMBER () فنکشن کے نفاذ کے لیے استعمال کرنا شروع کریں۔

>> منتخب کریں * سے ڈیٹا . آرڈر 1؛

ٹیبل آرڈر 1 گرڈ ویو میں دکھایا گیا ہے جیسا کہ ذیل میں دکھایا گیا ہے۔ آپ دیکھ سکتے ہیں کہ اس میں 4 کالم فیلڈز ، آئی ڈی ، ریجن ، سٹیٹس اور آرڈر نمبر ہیں۔ ہم ایک ہی وقت میں آرڈر بائی اور پارٹیشن بائی شق کا استعمال کرتے ہوئے اس ٹیبل کے تمام ریکارڈ لائیں گے۔

ایس کیو ایل ورک بینچ 8.0 کے استفسار کے علاقے میں ، نیچے دکھایا گیا سوال ٹائپ کریں۔ استفسار SELECT شق کے ساتھ شروع کیا گیا ہے ، تمام ریکارڈز کو حاصل کرتے ہوئے ROW_NUMBER () فنکشن کے ساتھ اوور شق کے ساتھ۔ OVER شق کے بعد ، ہم نے اس جدول کے مطابق جدول کو پارٹیشن میں تقسیم کرنے کے لیے PARTITION BY بیان کے ذریعے کالم کی حیثیت بیان کی ہے۔ آرڈر بائی شق کالم ریجن کے مطابق ٹیبل کو اترتے ہوئے ترتیب دینے کے لیے استعمال کی گئی ہے۔ صف نمبر قطار_نم کالم میں رکھے جائیں گے۔ اس کمانڈ پر عمل کرنے کے لیے فلیش آئیکن پر ٹیپ کریں۔

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

نتیجہ:

آخر میں ، ہم نے MySQL ورک بینچ اور MySQL کمانڈ لائن کلائنٹ شیل میں ROW_NUMBER () فنکشن استعمال کرنے میں تمام ضروری مثالیں مکمل کر لی ہیں۔