0Pricing
SQL Academy · درس

المجاميع التراكمية والمتوسطات المتحركة

احسب المجاميع التراكمية والمتوسطات المتحركة باستخدام SUM(...) OVER (ORDER BY ... ROWS BETWEEN ...).

المجاميع التراكمية والمتوسطات المتحركة درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

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

المجموع التراكمي هو SUM مع ORDER BY في النافذة — ومن دون عبارة إطار، لذا يكون الإطار الافتراضي «من البداية حتى الصف الحالي»:

SELECT day, revenue,
       SUM(revenue) OVER (ORDER BY day) AS running_total
FROM daily_revenue
ORDER BY day;

المجموع التراكمي لكل مجموعة

أعد ضبط المجموع التراكمي لكل مستخدم:

SELECT id, user_id, total,
       SUM(total) OVER (
         PARTITION BY user_id ORDER BY created_at
       ) AS user_running_total
FROM orders;

المتوسط المتحرك

يستخدم المتوسط المتحرك لعدد N من الأيام إطار ROWS:

SELECT day, revenue,
       AVG(revenue) OVER (
         ORDER BY day
         ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
       ) AS avg_7d
FROM daily_revenue;

المتوسط المتحرك المركزي

نافذة مركزية من 7 أيام (3 قبل الصف الحالي، والصف الحالي، و3 بعده):

SELECT day, revenue,
       AVG(revenue) OVER (
         ORDER BY day
         ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
       ) AS avg_7d_centred
FROM daily_revenue;

التوزيع التراكمي

ما الكسر من إجمالي الإيرادات الذي وصلنا إليه في كل يوم؟

SELECT day, revenue,
       SUM(revenue) OVER (ORDER BY day)
         / SUM(revenue) OVER ()  AS cum_share
FROM daily_revenue;

ROWS مقابل RANGE

  • ROWS — عدّ الصفوف فعليًا (N من الصفوف قبل أو بعد)
  • RANGE — تحديد نطاق القيم منطقيًا (مثل 7 أيام استنادًا إلى قيمة التاريخ)
-- ROWS: 6 previous rows + this one (may skip dates with no data)
AVG(revenue) OVER (ORDER BY day ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)

-- RANGE: include any row with a day within '6 days' of the current row
AVG(revenue) OVER (ORDER BY day RANGE BETWEEN INTERVAL '6 days' PRECEDING AND CURRENT ROW)

الحد الأقصى التراكمي

أفضل قيمة حتى كل نقطة:

SELECT day, total_users,
       MAX(total_users) OVER (ORDER BY day) AS peak_so_far
FROM daily_metrics;

العد التراكمي

إجمالي الأحداث التي ظهرت حتى هذا الصف:

SELECT id, ts,
       COUNT(*) OVER (ORDER BY ts) AS events_so_far
FROM events;

اكتشاف الحالات الشاذة

قارن إيرادات اليوم بخط الأساس المتحرك:

SELECT day, revenue, avg_7d,
  CASE WHEN revenue < 0.5 * avg_7d THEN 'WARNING' ELSE 'OK' END AS status
FROM (
  SELECT day, revenue,
         AVG(revenue) OVER (ORDER BY day ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING) AS avg_7d
  FROM daily_revenue
) sub;

قيم NULL الأولية

مع نافذة من 7 صفوف، تحتوي الصفوف الستة الأولى على متوسطات NULL أو جزئية. قرر ما إذا كنت تريد إخفاءها أو اعتبار النوافذ الجزئية صالحة.

الأداء

تحتاج التجميعات الجارية إلى إدخال مرتب حسب التقسيم. ويتجنب الفهرس الموجود على عمود ORDER BY عملية الفرز.

مراجعة

تتيح الأُطر إجراء الحسابات الجارية.

  • الإطار الافتراضي مع ORDER BY = «من البداية حتى الصف الحالي»
  • ROWS BETWEEN n PRECEDING AND CURRENT ROW = نافذة متحركة
  • ‏SUM/AVG/MAX على النوافذ = قيم تراكمية أو متحركة

تحقق سريع

ما عبارة الإطار التي تمنحك متوسطًا متحركًا لسبعة أيام حتى الصف الحالي؟

الأسئلة الشائعة

هل درس «المجاميع التراكمية والمتوسطات المتحركة» مجاني؟

نعم — نص درس «المجاميع التراكمية والمتوسطات المتحركة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «المجاميع التراكمية والمتوسطات المتحركة»؟

احسب المجاميع التراكمية والمتوسطات المتحركة باستخدام SUM(...) OVER (ORDER BY ... ROWS BETWEEN ...). تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «المجاميع التراكمية والمتوسطات المتحركة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. OVER وPARTITION BY وORDER BY
  2. ROW_NUMBER وRANK وDENSE_RANK
  3. LAG وLEAD وأنماط السلاسل الزمنية
  4. المجاميع التراكمية والمتوسطات المتحركة
← العودة إلى SQL Academy