هذا هو إصدار 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_usersignored_user_idويحسب عدد المرات التي يظهر فيها هذا المعرف في جدولignored_users(مما يشير إلى عدد المرات التي تم فيها تجاهل المستخدم)، مع تصفية النتائج بين:start_dateو:end_date. - CTE
muted_usersمشابه ولكنه يحددmuted_user_idمن جدولmuted_usersويحسب الحالات ضمن عوامل تصفية التاريخ.
- يحدد CTE
- بيان SELECT الرئيسي: يحدد تفاصيل المستخدم من جدول
usersوالعدد من CTEsignored_usersوmuted_users.- يتم أخذ
ignores_countمباشرة من CTEignored_users. - يتم أخذ
mutes_countمن CTEmuted_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 |