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

هذا هو إصدار 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
إعجاب واحد (1)