تقرير لوحة التحكم - أبرز المستخدمين الذين تم تجاهلهم أو كتمهم

هذا هو إصدار SQL لتقرير لوحة المعلومات للمستخدمين الأكثر تجاهلاً / كتمًا.

يقدم تقرير لوحة المعلومات هذا للمسؤولين رؤى حول المستخدمين الذين تم تجاهلهم أو كتمهم من قبل أعضاء آخرين على المنصة بين تواريخ البدء والانتهاء المحددة. المستخدم المتجاهل هو شخص تم تصفيته بشكل انتقائي بواسطة عضو بحيث لا تكون منشوراته مرئية له، بينما المستخدم المكتوم هو شخص اختار عضو عدم تلقي أي إشعارات منه.

يمكن لهذا التقرير تحديد المستخدمين الذين يسببون احتكاكًا داخل مجتمع ما، أو الذين يؤدي سلوكهم إلى عدم رغبة الآخرين في التفاعل معهم. يمكن أن يساعد التقرير في اتخاذ قرارات الإشراف مثل التواصل مع المستخدمين الذين يتم تجاهلهم أو كتمهم بشكل متكرر لمعالجة سلوكهم، أو فهم ما إذا كانت هناك مشكلات أوسع في المجتمع تتطلب اهتمامًا.

-- [params]
-- date :start_date = 2023-01-01
-- date :end_date = 2025-01-01

WITH ignored_users AS (
    SELECT
        ignored_user_id AS user_id,
        COUNT(*) AS ignores_count
    FROM ignored_users
    WHERE created_at >= :start_date
      AND created_at <= :end_date
    GROUP BY ignored_user_id
    ORDER BY COUNT(*) DESC
),
muted_users AS (
    SELECT
        muted_user_id AS user_id,
        COUNT(*) AS mutes_count
    FROM muted_users
    WHERE created_at >= :start_date
      AND created_at <= :end_date
    GROUP BY muted_user_id
    ORDER BY COUNT(*) DESC
)

SELECT
    u.id AS user_id,
    u.username AS username,
    ig.ignores_count AS ignores_count,
    COALESCE(mu.mutes_count, 0) AS mutes_count,
    ig.ignores_count + COALESCE(mu.mutes_count, 0) AS total
FROM users AS u
JOIN ignored_users AS ig ON ig.user_id = u.id
LEFT OUTER JOIN muted_users AS mu ON mu.user_id = u.id
ORDER BY total DESC

شرح استعلام SQL

يعمل استعلام SQL هذا في عدة خطوات:

  • معلمات التاريخ:
    • يقبل الاستعلام معلمتين، :start_date و :end_date، اللتين تحددان النطاق الزمني للتقرير. تقبل كلتا معلمتي التاريخ تنسيق التاريخ YYYY-MM-DD.
  • تعبيرات الجدول المشتركة (CTEs):
    • يحدد CTE ignored_users ignored_user_id ويحسب عدد المرات التي يظهر فيها هذا المعرف في جدول ignored_users (مما يشير إلى عدد المرات التي تم فيها تجاهل المستخدم)، مع تصفية النتائج بين :start_date و :end_date.
    • CTE muted_users مشابه ولكنه يحدد muted_user_id من جدول muted_users ويحسب الحالات ضمن عوامل تصفية التاريخ.
  • بيان SELECT الرئيسي: يحدد تفاصيل المستخدم من جدول users والعدد من CTEs ignored_users و muted_users.
    • يتم أخذ ignores_count مباشرة من CTE ignored_users.
    • يتم أخذ mutes_count من CTE muted_users، ولكن إذا كان NULL (مما يعني أن المستخدم لم يتم كتمه)، فسيتم استبداله بـ 0 باستخدام الدالة COALESCE.
    • يتم حساب الإجمالي عن طريق إضافة عمليات التجاهل والكتم معًا.
  • JOINs: يستفيد الاستعلام الرئيسي من JOIN على ignored_users لتضمين جميع المستخدمين الذين تم تجاهلهم مرة واحدة على الأقل، و LEFT OUTER JOIN على muted_users لتضمين المستخدمين الذين ربما لم يتم كتمهم.
  • ORDER BY: يتم ترتيب التقرير حسب إجمالي عمليات التجاهل والكتم بترتيب تنازلي، مما يعرض المستخدمين “المشكلين” في أعلى التقرير.

مثال على النتائج

المستخدم اسم المستخدم عدد مرات التجاهل عدد مرات الكتم الإجمالي
user1 user1 4 1 5
user2 user2 3 0 3
user3 user3 1 2 3
3 إعجابات