اذهب إلى المحتوى
  • 0

ما فائدة الدالة OVER و PARTITION BY في SQL

سعيد يوسف

السؤال

Recommended Posts

  • 1

تستخدم الدالة OVER لانتقاء الأسطر من ناتج الاستعلام التي نريد تطبيق عليهم دالة معينة (دالة تجميع aggregation function)، وتفيد في عمل ترتيب أو حسابات عليهم، من خلال تقسيمهم إلى أجزاء partitions ولذلك تستخدم مع  window functions.

الشكل العام لها:

<function> OVER (        [PARTITION BY clause]
                         [ORDER BY clause]
                         [ROWS or RANGE clause])

حيث نمرر لها غلاقة clause نحدد فيها الأسطر المستهدفة.

  • في حال لم يتم تمرير غلاقة يكون استعلام على كامل الجدول
  • في حال تم تمرير عبارة التقسيم يتم تطبيق العملية على الأسطر / السجلات المختارة

مثلا يمكن جلب إجمالي أرباح شركة ثم حساب المجموع الجزئي حسب الفرع بعمل تقسيم حسب الدولة

SELECT year, country,  
product, -- المنتج
profit,  -- ربح النتج

SUM(profit) OVER() AS total_profit, -- ربح إجمالي يجمع الأرباح

SUM(profit) OVER(PARTITION BY country) AS country_profit -- تقسيم الربح حسب الدوالة

FROM sales

ORDER BY country, year, product, profit;

والنتيجة:

أصبح باستطاعتنا تحديد ربح منتج الحاسوب بالنسبة لأرباح فرع فنلندا الإجمالية مثلا.. 1500/1610 في سنة 2000

over-1.JPG.bf3fa651ca47bcc8b98c39555e84a791.JPG

مثال آخر،

حساب قيم أعمدة جدول من خلال عمل حسابات جزئية على ناتج الاستعلام، في مدرسة نريد عمل تحليل حسب متوسط العمر و عدد الطلاب والنتائج يتم فرزهم حسب الجنس. 

SELECT id, name, gender,
-- عدد الطلاب حسب الجنس
COUNT(gender) OVER (PARTITION BY gender) AS Total_students,
-- متسوط العمر حسب الجنس
AVG(age) OVER (PARTITION BY gender) AS Average_Age,
-- مجموع الدخل حسب الجنس
SUM(total_score) OVER (PARTITION BY gender) AS Total_Score
FROM student

والنتائج:

over-2.JPG.bd8f189dcca43539e3fdc07995d06bc0.JPG

 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...