هذا هو إصدار 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 |
| … | … | … |