هذا هو إصدار SQL لتقرير لوحة المعلومات للمستخدمين حسب النوع.
يقدم هذا التقرير عدد المستخدمين حسب أدوار وحالات محددة داخل مجتمع Discourse. يقوم بتصنيف المستخدمين إلى أربع مجموعات متميزة: المسؤولون (Admins)، والمشرفون (Moderators)، والمعلقون (Suspended)، والمُخرسون (Silenced). الغرض من هذا التقرير هو منح مديري المجتمع نظرة عامة سريعة على توزيع أنواع المستخدمين وأولئك الذين لديهم وصول مقيد بسبب التعليق أو الإسكات.
SELECT "Type", "Count" FROM (
SELECT 'Admin' AS "Type", COUNT(id) AS "Count", 1 rk FROM users WHERE admin = true AND id > 0
UNION SELECT 'Moderator', COUNT(id), 2 FROM users WHERE moderator = true AND id > 0
UNION SELECT 'Suspended', COUNT(id), 3 FROM users WHERE suspended_till > current_date
UNION SELECT 'Silenced', COUNT(id), 4 FROM users WHERE silenced_till > current_date) AS data
ORDER BY rk
شرح استعلام SQL
- ينشئ الاستعلام جدولًا مشتقًا
dataبثلاثة أعمدة: “Type” (النوع)، و"Count" (العدد)، وعمود ترتيبrkلضمان ترتيب النتائج النهائية منطقيًا (المسؤولون، المشرفون، المعلقون، المُخرسون). - لكل دور أو حالة مستخدم (المسؤول، المشرف، المعلق، المُخرس)، يقوم بيان
SELECTبحساب عدد المستخدمين الذين يطابقون المعايير:- يتم تحديد المسؤولين بواسطة
admin = true. - يتم تحديد المشرفين بواسطة
moderator = true. - المستخدمون المعلقون هم أولئك الذين لديهم تاريخ
suspended_tillفي المستقبل (suspended_till > current_date). - المستخدمون المُخرسون هم أولئك الذين لديهم تاريخ
silenced_tillفي المستقبل (silenced_till > current_date).
- يتم تحديد المسؤولين بواسطة
- يتضمن كل بيان
SELECTرتبة ثابتة (rk) لأغراض الترتيب. - يتم استخدام عامل التشغيل
UNIONلدمج نتائج عباراتSELECTالأربع في مجموعة نتائج واحدة. - يقوم بيان
SELECTالخارجي بعد ذلك باسترداد “Type” و"Count" من الجدول المشتق وترتيب النتائج حسب العمودrk.
نتائج مثال
| النوع | العدد |
|---|---|
| مسؤول | 14 |
| مشرف | 30 |
| معلق | 3 |
| مُخرس | 2 |