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