Menu
CoddyTech

دوال التجميع

جزء من قسم الأساسيات في رحلة SQL على Coddy. الدرس 68 من 72.

باستخدام OVER (ORDER BY ...)، تُحسب دوال التجميع مثل AVG() أو MAX() على الصفوف حتى الصف الحالي، بما في ذلك الصفوف التي تتساوى معه في قيمة ORDER BY. ومن دون ORDER BY داخل OVER، تُحسب على جميع الصفوف، ولذلك يحصل كل صف على القيمة نفسها.
على سبيل المثال، يمكننا حساب أكبر إيراد حققناه حتى كل فترة منتهية:

الشهرالإيراداتالمنطقة
440East
520East
660West
755West
861East
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1

سيُعيد هذا:

الشهرالإيراداتmax_revenue
44040
52040
66060
75560
86161

في الشهرين 4 و5، يبلغ الحد الأقصى للإيرادات 40، وفي الشهرين 6 و7 يبلغ 60، أما في الشهر 8 فيبلغ 61. ويعود ذلك إلى أنه عندما يعثر على إيرادات جديدة أكبر، يستبعد القيمة القديمة ويستخدم أكبر قيمة حتى الآن.

ستبدو دالة AVG() هكذا:

SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1
الشهرالإيراداتavg_revenue
44040
52030
66040
75543.75
86147.2

يمكننا أيضًا تجميع حساباتنا حسب فئات محددة باستخدام PARTITION BY. على سبيل المثال:

SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1

سيعطينا:

الشهرالإيراداتالمنطقةmax_revenue
440East40
520East40
660West60
755West60
861East61

الآن، يُحسب الحد الأقصى بشكل منفصل لكل منطقة. وتحتفظ منطقتا الشرق والغرب بكلٍّ منهما بأقصى قيمة متراكمة خاصة بها بشكل مستقل.

challenge icon

التحدي

سهل

الجداول والأعمدة المتاحة:

  • books: book, page, words

لكل كتاب، اعرض اسم الكتاب، وإجمالي عدد صفحاته، وعدد الكلمات في كل صفحة، واحسب ما يلي:

  1. أكبر عدد من الكلمات في أي صفحة من ذلك الكتاب
  2. متوسط عدد الكلمات لكل صفحة في الكتاب بأكمله
  3. الفرق بين عدد كلمات الصفحة الحالية ومتوسط عدد الكلمات لكل صفحة في الكتاب

اعرض النتائج مرتبة حسب الكتاب ورقم الصفحة.

أعِد الأعمدة التالية:

  • book
  • page
  • words
  • max_words_in_book
  • avg_words_per_page
  • diff_from_avg

جرّب بنفسك

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ SQL