ماڈیول اسباق (1/4)
تعارف اور اوور شق
تعارف اور اوور کلاز
پچھلے اسباق میں ہم نے دیکھا کہ ڈیٹا کو جمع کرنے کے لیے GROUP BY کو کیسے استعمال کیا جائے۔ تاہم، GROUP BY کی ایک بہت بڑی حد ہے: یہ قطاروں کو گرا دیتا ہے۔ اگر آپ شہر کے لحاظ سے گروپ بناتے ہیں، تو آپ کو فی شہر ایک قطار ملتی ہے اور آپ انفرادی گاہکوں کی تفصیلات کھو دیتے ہیں۔
یہ وہ جگہ ہے جہاں ونڈو فنکشنز کھیل میں آتے ہیں۔ وہ آپ کو اصل قطاروں کو برقرار رکھتے ہوئے_ مجموعی حسابات (جیسے رقم یا اوسط) چلانے دیتے ہیں۔
اوور() شق
جادوئی کلیدی لفظ OVER() ہے۔ یہ ڈیٹا بیس کو بتاتا ہے کہ مجموعی فنکشن (جیسے SUM, AVG, COUNT) کو ونڈو فنکشن کے طور پر سمجھا جانا چاہئے، پورے نتیجہ کے سیٹ (عالمی "ونڈو") پر حساب کیا جانا چاہئے لیکن لاگو کیا اور ہر ایک قطار پر واپس آیا۔
SELECT
order_id,
total_amount,
AVG(total_amount) OVER() AS global_average
FROM orders;اس مثال میں، ہم ہر انفرادی آرڈر کو برقرار رکھتے ہیں، لیکن ہر قطار میں ایک global_average کالم بھی ہوتا ہے جس میں تمام_ آرڈرز کی اوسط ہوتی ہے۔ بہت مفید ہے، مثال کے طور پر، یہ پیمائش کرنے کے لیے کہ آرڈر اوسط سے کتنا ہٹ جاتا ہے!
'مصنوعات' ٹیبل سے 'قیمت' کالم منتخب کریں۔ 'global_max_price' نام کا ایک کالم شامل کریں جس میں زیادہ سے زیادہ قیمت پوری ٹیبل پر ونڈو فنکشن کے ساتھ شمار کی گئی ہو۔
اشارہ دکھائیں۔
MAX(قیمت) کو OVER() کے ساتھ ملا کر استعمال کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔
'id'، 'قیمت' نکالیں اور 'مصنوعات' کے جدول سے مجموعی اوسط قیمت ('عالمی_ اوسط') شامل کریں۔
اشارہ دکھائیں۔
صرف AVG (قیمت) OVER() شامل کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔