تقرير لوحة التحكم - المواضيع

هذا هو إصدار SQL من تقرير لوحة المعلومات للمواضيع.

يقدم هذا التقرير عدد المواضيع الجديدة التي تم إنشاؤها يوميًا ضمن نطاق تاريخ محدد. لا يتضمن التقرير الرسائل الشخصية، فقط المواضيع العادية المرئية في المنتدى.

--[params]
-- date :start_date
-- date :end_date

SELECT 
     p.created_at::date as day,
    COUNT(p.id) AS topics_created
FROM posts p
INNER JOIN topics t ON t.id = p.topic_id AND t.deleted_at ISNULL
WHERE p.created_at::date BETWEEN :start_date AND :end_date
    AND p.post_number = 1
    AND p.user_id > 0 
    AND p.deleted_at ISNULL
    AND t.archetype = 'regular'
GROUP BY p.created_at::date
ORDER BY p.created_at::date ASC

شرح استعلام SQL

يقوم استعلام SQL بتنفيذ الإجراءات التالية:

  • تعريف المعلمات: يقبل معلمتين، :start_date و :end_date، اللتين تحددان نطاق التاريخ للتقرير. تقبل كلتا معلمتي التاريخ تنسيق YYYY-MM-DD.
  • اختيار البيانات: يختار الاستعلام تاريخ إنشاء المشاركات (p.created_at) وعدد معرفات المشاركات (COUNT(p.id)) كـ topics_created.
  • الربط: يربط جدول posts بجدول topics بناءً على حقول id الخاصة بهما، مع التأكد من مراعاة المواضيع غير المحذوفة فقط (t.deleted_at ISNULL).
  • عوامل التصفية: يقوم الاستعلام بتصفية المشاركات لتشمل فقط تلك التي:
    • تم إنشاؤها ضمن نطاق التاريخ المحدد (p.created_at::date BETWEEN :start_date AND :end_date).
    • هي المشاركة الأولى في موضوع (p.post_number = 1)، مما يشير إلى بداية موضوع جديد.
    • تم إنشاؤها بواسطة مستخدمين مسجلين (p.user_id > 0)، باستثناء مشاركات النظام.
    • لم يتم حذفها (p.deleted_at ISNULL).
    • تنتمي إلى مواضيع من النوع ‘regular’ (t.archetype = 'regular')، باستثناء الرسائل الشخصية.
  • التجميع: يتم تجميع النتائج حسب تاريخ إنشاء المشاركات (p.created_at::date).
  • الترتيب: يتم ترتيب المخرجات النهائية حسب تاريخ الإنشاء بترتيب تصاعدي (ORDER BY p.created_at::date ASC)، مما يوفر عرضًا زمنيًا لإنشاء المواضيع الجديدة.

نتائج مثال

day topics_created
2023-11-11 18
2023-11-12 10
2023-11-13 21
2023-11-14 19
2023-11-15 22
4 إعجابات