دروس الوحدة (1/4)
المقدمة والجملة OVER
المقدمة والجملة الزائدة
لقد رأينا في الدروس السابقة كيفية استخدام GROUP BY لتجميع البيانات. ومع ذلك، فإن GROUP BY له قيود كبيرة: يؤدي إلى طي الصفوف. إذا قمت بالتجميع حسب المدينة، فستحصل على صف واحد لكل مدينة وستفقد تفاصيل العملاء الفرديين.
هذا هو المكان الذي تلعب فيه وظائف النافذة. فهي تتيح لك إجراء حسابات مجمعة (مثل المجاميع أو المتوسطات) مع الاحتفاظ بالصفوف الأصلية.
جملة OVER ().
الكلمة الرئيسية السحرية هي OVER(). تخبر قاعدة البيانات أن الوظيفة المجمعة (على سبيل المثال SUM، AVG، COUNT) يجب أن تعامل كدالة نافذة، يتم حسابها على مجموعة النتائج بأكملها ("النافذة" العامة) ولكن يتم تطبيقها وإرجاعها في كل صف واحد.
SELECT
order_id,
total_amount,
AVG(total_amount) OVER() AS global_average
FROM orders;في هذا المثال، نحتفظ بكل طلب فردي، ولكن يحتوي كل صف أيضًا على عمود محمي_INLINE_6 يتضمن متوسط جميع الطلبات. من المفيد جدًا، على سبيل المثال، قياس مدى انحراف الطلب عن المتوسط!
حدد عمود "السعر" من جدول "المنتجات". أضف عمودًا يسمى "global_max_price" يحتوي على الحد الأقصى للسعر المحسوب باستخدام دالة النافذة على الجدول بأكمله.
إظهار التلميح
استخدم MAX(price) مع OVER().
الحل متاح بعد 3 من المحاولات
استخرج "المعرف" و"السعر" وأضف متوسط السعر الإجمالي ("global_avg") من جدول "المنتجات".
إظهار التلميح
فقط أضف AVG(price) OVER().
الحل متاح بعد 3 من المحاولات