تقرير لوحة القيادة - أفضل المستخدمين حسب الإعجابات المستلمة

هذا هو إصدار SQL لتقرير لوحة المعلومات للمستخدمين الأعلى حسب الإعجابات المستلمة.

يوضح تقرير لوحة المعلومات هذا المستخدمين الأعلى في موقع ما حسب عدد الإعجابات المستلمة عبر جميع المنشورات. يساعد التقرير المسؤولين على تحديد المستخدمين ذوي المشاركة العالية عن طريق عد الإعجابات المستلمة خلال فترة زمنية معينة، مما يساعد في التعرف على الأعضاء النشطين، وتقييم جودة المحتوى، ومراقبة اتجاهات مشاركة المستخدم، واتخاذ قرارات مستنيرة بشأن إدارة المجتمع مثل اختيار المشرفين.

--[params]
--date :start_date = 2024-01-01
--date :end_date = 2025-01-01

SELECT
ua.user_id AS user_id,
u.username as username,
COUNT(*) likes_received
FROM user_actions ua
INNER JOIN users u on ua.user_id = u.id
WHERE ua.created_at::date BETWEEN :start_date AND :end_date
AND ua.action_type = 2
GROUP BY ua.user_id, u.username, u.uploaded_avatar_id
ORDER BY likes_received DESC

شرح استعلام SQL

يعمل الاستعلام على النحو التالي:

  • معلمات التاريخ: يقبل الاستعلام معلمتين، :start_date و :end_date، اللتين تحددان النطاق الزمني للتقرير. تقبل كلتا معلمتي التاريخ تنسيق التاريخ YYYY-MM-DD.
  • اختيار البيانات: يختار الاستعلام معرفات المستخدمين وأسماء المستخدمين من جدول user_actions (ua) وجدول users (u)، والتي يتم ربطها معًا باستخدام أمر INNER JOIN الخاص بلغة SQL على الشرط الذي يتطابق فيه ua.user_id مع u.id.
  • تصفية البيانات: يتم استخدام عبارة WHERE لتصفية الإجراءات التي تقع ضمن النطاق الزمني المحدد وتأخذ فقط الإجراءات من النوع was_liked، والتي يتم تمثيلها بـ action_type = 2.
  • التجميع: تقوم الدالة COUNT(*) بالاشتراك مع عبارة GROUP BY بتجميع النتائج حسب user_id و username و uploaded_avatar_id، وتحسب عدد الإعجابات التي تلقاها كل مستخدم.
  • ترتيب النتائج: تقوم عبارة ORDER BY بعد ذلك بترتيب البيانات المجمعة بترتيب تنازلي بناءً على likes_received، بحيث يكون المستخدم الذي تلقى أكبر عدد من الإعجابات في أعلى التقرير.

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

نتائج مثال

user username likes_received
user1 user1 748
user2 user2 324
user3 user3 308
إعجابَين (2)