تقرير لوحة المعلومات - المستخدمون حسب مستوى الثقة

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

يقدم هذا التقرير نظرة عامة على توزيع مستويات ثقة المستخدمين داخل مجتمع Discourse.

SELECT 
    CASE
        WHEN trust_level = 0 THEN 'newuser'
        WHEN trust_level = 1 THEN 'basic'
        WHEN trust_level = 2 THEN 'member'
        WHEN trust_level = 3 THEN 'regular'
        WHEN trust_level = 4 THEN 'leader'
        ELSE 'unknow'
    END,
    COUNT(users) 
FROM users
WHERE 
    id > 0
    AND NOT EXISTS(
                     SELECT 1
                     FROM anonymous_users a
                     WHERE a.user_id = users.id
                  )
GROUP BY trust_level
ORDER BY trust_level

تفصيل الاستعلام

  • SELECT CASE: يستخدم هذا الجزء من الاستعلام عبارة CASE لتعيين اسم قابل للقراءة لكل مستوى ثقة. يقوم بترجمة حقل trust_level الرقمي إلى سلاسل نصية مثل ‘newuser’، ‘basic’، ‘member’، ‘regular’، و ‘leader’ لسهولة الفهم.
  • COUNT(users): تقوم هذه الدالة بعد عدد المستخدمين ضمن كل مستوى ثقة.
  • FROM users: يسحب الاستعلام البيانات من جدول users، الذي يحتوي على جميع حسابات المستخدمين في المجتمع.
  • WHERE id > 0: يضمن هذا الشرط النظر فقط في المستخدمين الحقيقيين، واستبعاد أي حسابات نظام قد يكون لها معرف 0 أو أقل.
  • AND NOT EXISTS: يقوم هذا الاستعلام الفرعي بتصفية أي مستخدمين تم تمييزهم على أنهم مجهولون عن طريق التحقق من جدول anonymous_users. إذا كان للمستخدم إدخال في جدول anonymous_users، فلن يتم تضمينه في العد.
  • GROUP BY trust_level: تقوم هذه العبارة بتجميع النتائج حسب مستوى الثقة، مما يضمن إجراء العد بشكل منفصل لكل مستوى.
  • ORDER BY trust_level: أخيرًا، يتم ترتيب النتائج حسب حقل trust_level، مما يضمن فرز المخرجات من أدنى مستوى (newuser) إلى أعلى مستوى (leader).

نتائج مثال

case count
newuser 1235
basic 234
member 345
regular 56
leader 23
إعجاب واحد (1)