مرکزی مواد پر جائیں
ماڈیول 13 · سبق 2 از 4کورس میں 50/57~15 min
ماڈیول اسباق (2/4)

PARTITION BY کے ساتھ گروپ بندی

PARTITION BY کے ساتھ گروپ بندی

ہر قطار پر عالمی حسابات رکھنا آسان ہے، لیکن اکثر یہ کافی نہیں ہوتا ہے۔ ہم ہر قطار پر اصل تفصیل رکھتے ہوئے اوسط فی زمرہ یا فی گاہک کا حساب لگانا چاہتے ہیں۔

یہ وہ جگہ ہے جہاں PARTITION BY کے اندر OVER(...) شق آتی ہے۔

PARTITION BY کیسے کام کرتا ہے۔

تصوراتی طور پر یہ GROUP BY کی طرح برتاؤ کرتا ہے، لیکن نتیجہ میں قطاروں کو منہدم کرنے کے بجائے، یہ صرف ڈیٹا کی "ونڈو" کی حد کو متعین کرتا ہے جس پر فنکشن واحد قطار کے نتائج کی گنتی کے لیے کام کرے گا۔

SQL
SELECT
  product_name,
  category_id,
  price,
  AVG(price) OVER(PARTITION BY category_id) AS cat_avg_price
FROM products;

ہر پروڈکٹ کی قطار اپنی تفصیلات رکھتی ہے، اور cat_avg_price کالم اس کے اسی زمرے میں موجود پروڈکٹس کے لیے اوسط _محدود دکھائے گا۔

ورزش#sql.m13.l2.e1
کوششیں: 0لوڈ ہو رہا ہے…

'پروڈکٹس' ٹیبل سے، 'id'، 'category_id' اور 'قیمت' نکالیں۔ ونڈو فنکشنز کا استعمال کرتے ہوئے ہر 'کیٹگری_آئی ڈی' کے لیے 'قیمت' کے SUM کا حساب لگاتے ہوئے ایک 'زمرہ_کل' کالم شامل کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

SUM(قیمت) OVER(PARTITION BY category_id) استعمال کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#sql.m13.l2.e2
کوششیں: 0لوڈ ہو رہا ہے…

'جائزہ' ٹیبل سے، 'product_id'، 'درجہ بندی' اور 'avg_product_rating' (پروڈکٹ کے لحاظ سے تقسیم کردہ اوسط درجہ بندی) دکھائیں۔ تمام قطاریں دکھائیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

AVG(درجہ بندی) اور PARTITION BY product_id استعمال کریں۔ اگر ضرورت ہو تو اسے NUMERIC پر کاسٹ کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔