0Pricing
SQL Academy · درس

تقارير التواريخ الشائعة (MTD وWoW وYoY)

أنشئ تقارير من بداية الشهر، وأسبوعًا مقابل أسبوع، وسنة مقابل سنة باستخدام date_trunc وعمليات الربط الذاتي أو دوال النوافذ.

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

ثلاثة تقارير كلاسيكية للفترات

تحتاج كل لوحة معلومات للأعمال تقريبًا إلى ما يلي:

  • MTD — من بداية الشهر حتى تاريخه
  • WoW — مقارنة أسبوع بأسبوع
  • YoY — مقارنة عام بعام

من بداية الشهر حتى تاريخه

مجموع هذا الشهر حتى الآن:

SELECT SUM(total) AS mtd_revenue
FROM orders
WHERE created_at >= date_trunc('month', NOW())
  AND created_at <  date_trunc('month', NOW()) + INTERVAL '1 month';

من بداية العام حتى تاريخه

النمط نفسه، لكن على مستوى العام:

SELECT SUM(total) AS ytd_revenue
FROM orders
WHERE created_at >= date_trunc('year', NOW());

مقارنة أسبوع بأسبوع

قارن هذا الأسبوع بالأسبوع السابق:

SELECT
  SUM(total) FILTER (
    WHERE created_at >= date_trunc('week', NOW())
  ) AS this_week,
  SUM(total) FILTER (
    WHERE created_at >= date_trunc('week', NOW()) - INTERVAL '1 week'
      AND created_at <  date_trunc('week', NOW())
  ) AS last_week
FROM orders
WHERE created_at >= date_trunc('week', NOW()) - INTERVAL '1 week';

مقارنة عام بعام

الفترة نفسها مقارنةً بالفترة نفسها من العام الماضي:

SELECT date_trunc('month', created_at) AS month, SUM(total)
FROM orders
WHERE created_at >= NOW() - INTERVAL '2 years'
GROUP BY 1
ORDER BY 1;

-- Then plot with two lines: current year, previous year.

سلسلة يومية من دون فجوات

إذا لم تحدث طلبات في يوم ما، يتجاوزه GROUP BY. أنشئ سلسلة تقويم كاملة ثم استخدم LEFT JOIN:

SELECT day, COALESCE(SUM(o.total), 0) AS revenue
FROM generate_series(
  CURRENT_DATE - INTERVAL '30 days',
  CURRENT_DATE,
  INTERVAL '1 day'
) AS day
LEFT JOIN orders o ON date_trunc('day', o.created_at) = day
GROUP BY day
ORDER BY day;

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

تحسب دالة نافذة المجموع التراكمي من دون عمليات ربط ذاتي:

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

الفرق بين الفترات

النمو السنوي باستخدام LAG:

SELECT month,
       revenue,
       LAG(revenue, 12) OVER (ORDER BY month) AS prev_year,
       (revenue - LAG(revenue, 12) OVER (ORDER BY month))
         / NULLIF(LAG(revenue, 12) OVER (ORDER BY month), 0) AS yoy_growth
FROM monthly_revenue;

آخر 7 / 30 يومًا (نافذة متحركة)

النافذة المتحركة مقابل النافذة المتوافقة مع التقويم. اختر المعنى الذي يناسب نشاطك التجاري فعلًا:

-- Trailing 7 days, ending now:
WHERE created_at >= NOW() - INTERVAL '7 days';

-- This calendar week, from Monday:
WHERE created_at >= date_trunc('week', NOW());

اعتبارات المناطق الزمنية

يعتمد معنى «اليوم» على المنطقة الزمنية للمستخدم. حوّل الوقت قبل اقتطاعه:

SELECT date_trunc('day', created_at AT TIME ZONE 'America/Los_Angeles') AS la_day,
       COUNT(*)
FROM events
GROUP BY 1;

التجميع المسبق باستخدام العروض المجسّدة

إذا كان التقرير يُشغّل عند كل تحميل للصفحة، فأنشئ نسخة مجسّدة منه مرة واحدة يوميًا. يُشرح ذلك في درس العروض المجسّدة.

مراجعة

تعتمد تقارير الفترات على بضعة أنماط.

  • الفواصل نصف المفتوحة مع date_trunc
  • FILTER لتجميع الفترات المتوازية
  • generate_series + LEFT JOIN لإنشاء أيام مع ملء الفجوات
  • LAG لحساب الفروق بين الفترات

تحقق سريع

أي تعبير يحدد «اللحظة الأولى من هذا الشهر»؟

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

هل درس «تقارير التواريخ الشائعة (MTD وWoW وYoY)» مجاني؟

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

ماذا ستتعلم في «تقارير التواريخ الشائعة (MTD وWoW وYoY)»؟

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

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

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

كم من الوقت يستغرق درس «تقارير التواريخ الشائعة (MTD وWoW وYoY)»؟

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

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

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

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

  1. الحساب على التواريخ وINTERVAL
  2. EXTRACT وDATE_TRUNC وAGE
  3. المناطق الزمنية: TIMESTAMP مقابل TIMESTAMPTZ
  4. تقارير التواريخ الشائعة (MTD وWoW وYoY)
← العودة إلى SQL Academy