SQL اوور شق

Sql Awwr Shq



ایس کیو ایل کی جدید ترین خصوصیات میں سے ایک اوور کلاز ہے۔ یہ ایک خصوصیت ہے جو ہمیں حسابات کرنے اور ایس کیو ایل ونڈو کے فنکشنز کو قطاروں کے مخصوص ذیلی سیٹ پر لاگو کرنے کی اجازت دیتی ہے۔

یہ خاص طور پر مفید ہے جب آپ کو قطاروں کے گروپس کے لیے جمع یا درجہ بندی کا حساب لگانے کی ضرورت ہو، اصل میں نتیجہ کے پورے سیٹ کو ختم کیے بغیر۔

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







تقاضے:

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



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



نحو:

جیسا کہ ہم نے پہلے ذکر کیا ہے، زیادہ تر معاملات میں، ہم بنیادی طور پر اوور شق کو ونڈو کے افعال کے ساتھ استعمال کرتے ہیں۔





اس طرح، ہم شق کے نحو کو اس طرح بیان کر سکتے ہیں:

<ونڈو فنکشن> (اظہار) اوور (

[PARTITION by partition_expression، ...]

ترتیب_اظہار کے لحاظ سے [ASC | DESC]، ...]

[فریم_تعریف]

)

دیئے گئے نحو میں، ہم ہر ایک جزو کو اس طرح توڑ سکتے ہیں:



  1. - اس سے مراد وہ ونڈو فنکشن ہے جسے ہم قطاروں کی مخصوص ونڈو پر لاگو کرنا چاہتے ہیں جیسے SUM(), AVG(), ROW_NUMBER(), RANK، وغیرہ۔
  2. اظہار - یہ ایک کالم یا اظہار کی وضاحت کرتا ہے جس کے لئے ونڈو فنکشن لاگو ہوتا ہے۔
  3. BY PARTITION - یہ ایک اختیاری شق ہے جو نتیجہ سیٹ کو پارٹیشنز میں تقسیم کرتی ہے جہاں ہر پارٹیشن ایک علیحدہ یونٹ کی طرح ہوتا ہے جہاں فنکشن لاگو ہوتا ہے۔ ایک ہی پارٹیشن کے اندر قطاریں مخصوص کالموں میں ایک جیسی اقدار کا اشتراک کرتی ہیں۔
  4. آرڈر کے ذریعے - یہ اس ترتیب کی وضاحت کرتا ہے جس میں ہر پارٹیشن کی قطاروں پر کارروائی ہوتی ہے۔
  5. frame_specification - یہ ایک اختیاری شق ہے جو تقسیم کے اندر قطاروں کے فریم کی وضاحت کرتی ہے۔ عام فریم تصریحات میں ROWS BETWEEN AND یا RANGE BETWEEN AND

اس سے ہٹ کر، آئیے اس کو استعمال کرنے کے بارے میں کچھ عملی مثالیں تلاش کریں۔

مثال:

آئیے ہم دکھاتے ہیں کہ سکیلا سیمپل ڈیٹا بیس کا استعمال کرتے ہوئے شق کو کیسے استعمال کیا جائے۔ ایک مثال پر غور کریں جہاں ہمیں ہر فلم کے زمرے کی کل آمدنی کا تعین کرنے کی ضرورت ہے۔

ہم اوور شق کے ساتھ سم ونڈو فنکشن اور جوائن اسٹیٹمنٹس کے ایک گروپ کے ساتھ استعمال کر سکتے ہیں جیسا کہ درج ذیل مثال میں دکھایا گیا ہے۔

منتخب کریں۔
category.name AS category_name،
film.title AS film_title،
film.rental_rate،
SUM(payment.amount) OVER (PARTITION by category.name) کل_آمدنی کے طور پر
سے
فلم
جوائن کریں۔
فلم_کیٹیگری آن
film.film_id = film_category.film_id
جوائن کریں۔
زمرہ آن
film_category.category_id = category.category_id
جوائن کریں۔
انوینٹری آن
film.film_id = inventory.film_id
جوائن کریں۔
رینٹل آن
inventory.inventory_id = rental.inventory_id
جوائن کریں۔
ادائیگی آن
rental.rental_id = payment.rental_id
آرڈر کی طرف سے
قسم کا نام،
فلم کا عنوان

دی گئی استفسار میں، ہم فلم کے عنوان، کرایہ کی شرح کو منتخب کرکے شروع کرتے ہیں، اور زمرہ کے نام سے ہر زمرے کی تقسیم کی رقم کا تعین کرنے کے لیے رقم (Payment.amount over partition by category.name) کا استعمال کرتے ہیں۔

ہمیں اس بات کو یقینی بنانے کے لیے PARTITION BY شق کا استعمال کرنا چاہیے کہ رقم کا حساب کتاب ہر منفرد زمرے میں دوبارہ شروع ہو۔

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

وہاں آپ کے پاس ہے!

نتیجہ

اس مثال میں، ہم نے SQL میں OVER شق کے ساتھ کام کرنے کے بنیادی اصولوں کو دریافت کیا۔ یہ کوئی بنیادی شق نہیں ہے اور اس کے لیے SQL کی دیگر خصوصیات سے سابقہ ​​واقفیت درکار ہے۔