تقرير لوحة التحكم - تنبيه المشرفين

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

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

-- [params]
-- date :start_date = 2023-12-15
-- date :end_date = 2024-01-16

SELECT
  DATE(created_at) AS day,
  COUNT(1) AS notifications_count
FROM topics
WHERE archetype = 'private_message'
  AND subtype = 'notify_moderators'
  AND created_at BETWEEN :start_date AND :end_date
  AND deleted_at IS NULL
  AND user_id > 0
GROUP BY DATE(created_at)
ORDER BY day

شرح استعلام SQL

يعمل الاستعلام عن طريق استخراج البيانات من جدول topics - على وجه التحديد، تلك التي تتأهل كرسائل خاصة للمشرفين ضمن إطار زمني معين. دعنا نفصلها:

  • معلمات التاريخ:
    • يقبل الاستعلام معلمتين، :start_date و :end_date، اللتين تحددان نطاق التاريخ للتقرير. تقبل كلتا معلمتي التاريخ تنسيق التاريخ YYYY-MM-DD.
  • الاختيار والعد:
    • DATE(created_at) يحول الطابع الزمني created_at إلى تنسيق تاريخ ويسميه day. هذا يسمح بتجميع الرسائل وعدها حسب اليوم الذي تم إنشاؤها فيه.
    • يُستخدم COUNT(1) لعد عدد الإدخالات لكل يوم، وتسمية هذا العدد باسم notifications_count.
  • معايير التصفية:
    • يقوم الاستعلام بتصفية الإدخالات فقط حيث يكون archetype هو 'private_message'، مما يضمن أننا ننظر فقط إلى الرسائل وليس إلى أنواع أخرى من المواضيع.
    • يقتصر subtype على 'notify_moderators'، مما يعزل الحالات التي يقوم فيها المستخدمون بإخطار المشرفين أو طلب المساعدة منهم.
    • يتحقق من أن الطابع الزمني created_at للرسالة يقع بين :start_date و :end_date المحددين.
    • يتم استبعاد الرسائل التي تم حذفها (deleted_at IS NULL) من العد لضمان أن التقرير يعكس فقط الاتصالات النشطة.
    • أخيرًا، يضمن أن الرسائل مرتبطة بمستخدم صالح عن طريق التأكد من أن user_id > 0.
  • التجميع والترتيب:
    • يستخدم الاستعلام GROUP BY DATE(created_at) لتجميع النتائج حسب كل يوم ضمن النطاق الزمني المحدد.
    • ثم يقوم بترتيب النتائج زمنيًا باستخدام ORDER BY day، مما يجعل التقرير سهل القراءة والتفسير.

نتائج مثال

day notifications_count
2023-12-17 3
2023-12-18 1
2023-12-21 1
2023-12-23 2
2023-12-26 1
4 إعجابات