دوال التجميع
جزء من قسم الأساسيات في رحلة SQL على Coddy. الدرس 68 من 72.
باستخدام OVER (ORDER BY ...)، تُحسب دوال التجميع مثل AVG() أو MAX() على الصفوف حتى الصف الحالي، بما في ذلك الصفوف التي تتساوى معه في قيمة ORDER BY. ومن دون ORDER BY داخل OVER، تُحسب على جميع الصفوف، ولذلك يحصل كل صف على القيمة نفسها.
على سبيل المثال، يمكننا حساب أكبر إيراد حققناه حتى كل فترة منتهية:
| الشهر | الإيرادات | المنطقة |
| 4 | 40 | East |
| 5 | 20 | East |
| 6 | 60 | West |
| 7 | 55 | West |
| 8 | 61 | East |
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1سيُعيد هذا:
| الشهر | الإيرادات | max_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 40 |
| 6 | 60 | 60 |
| 7 | 55 | 60 |
| 8 | 61 | 61 |
في الشهرين 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 |
| 4 | 40 | 40 |
| 5 | 20 | 30 |
| 6 | 60 | 40 |
| 7 | 55 | 43.75 |
| 8 | 61 | 47.2 |
يمكننا أيضًا تجميع حساباتنا حسب فئات محددة باستخدام PARTITION BY. على سبيل المثال:
SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1سيعطينا:
| الشهر | الإيرادات | المنطقة | max_revenue |
| 4 | 40 | East | 40 |
| 5 | 20 | East | 40 |
| 6 | 60 | West | 60 |
| 7 | 55 | West | 60 |
| 8 | 61 | East | 61 |
الآن، يُحسب الحد الأقصى بشكل منفصل لكل منطقة. وتحتفظ منطقتا الشرق والغرب بكلٍّ منهما بأقصى قيمة متراكمة خاصة بها بشكل مستقل.
التحدي
سهلالجداول والأعمدة المتاحة:
books:book,page,words
لكل كتاب، اعرض اسم الكتاب، وإجمالي عدد صفحاته، وعدد الكلمات في كل صفحة، واحسب ما يلي:
- أكبر عدد من الكلمات في أي صفحة من ذلك الكتاب
- متوسط عدد الكلمات لكل صفحة في الكتاب بأكمله
- الفرق بين عدد كلمات الصفحة الحالية ومتوسط عدد الكلمات لكل صفحة في الكتاب
اعرض النتائج مرتبة حسب الكتاب ورقم الصفحة.
أعِد الأعمدة التالية:
bookpagewordsmax_words_in_bookavg_words_per_pagediff_from_avg
جرّب بنفسك
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2الشروط
أساسيات الشروطالكلمة المفتاحية ANDالكلمة المفتاحية ORالكلمة المفتاحية NOTدمج شروط متعددةالأقواسالقيم المنطقية Booleans3تنسيق محدد للنتائج
قيم Nullترتيب النتائج - الجزء الأولترتيب النتائج - الجزء الثانيمراجعة - شركة للأمن السيبرانيتحديد عدد السجلاتمراجعة - مصنع مركبات6تحديات تمهيدية
مراجعة - الانتخابات البرلمانيةمراجعة - اعتقال الشرطة للمجرمينمراجعة - حاوية مشروبات البارمراجعة - هندسة أعمدة جديدة9جداول متعددة
الربط الأساسي - الجزء الأولالربط الأساسي - الجزء الثانيمراجعة - الربط (Join)الربط الذاتي (Self Join)مراجعة - الربط الذاتي (Self Join)الاتحاد (Union)تبسيط الاستعلامات، الكلمة المفتاحية WITHمراجعة - استعلامات WITHمراجعة - مقاول العقارات12Window Functions الجزء الثاني
دوال RANK و DENSE_RANKمراجعة - RANK و DENSE_RANKدالة NTILEدوال التجميعمعيار ROWS و RANGEتدرّب بنفسك: Playground لـ SQL