تقرير لوحة التحكم - الحلول المقبولة

هذه نسخة SQL لتقرير لوحة التحكم حول الحلول المقبولة.

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

-- [params]
-- date :start_date = 2025-03-01
-- date :end_date = 2025-04-01
-- null category_id :category_id

WITH daily_solutions AS (
  SELECT 
    DATE(ta.created_at) AS solution_date,
    COUNT(*) AS solution_count
  FROM discourse_solved_solved_topics st
  JOIN discourse_solved_topic_answers ta ON ta.solved_topic_id = st.id
  JOIN posts p ON p.id = ta.answer_post_id AND p.deleted_at IS NULL
  JOIN topics t ON t.id = st.topic_id 
                AND t.archetype <> 'private_message'
                AND t.deleted_at IS NULL
                AND (:category_id IS NULL OR t.category_id = :category_id)
  JOIN users u ON u.id = p.user_id
  WHERE 
    st.created_at BETWEEN :start_date AND :end_date
    AND u.id > 0
    AND u.active
    AND u.silenced_till IS NULL
    AND u.suspended_till IS NULL
  GROUP BY DATE(ta.created_at)
)

SELECT 
  solution_date,
  solution_count
FROM daily_solutions
ORDER BY solution_date

شرح استعلام SQL

يستخدم هذا الاستعلام جدول discourse_solved_solved_topics وجدول discourse_solved_topic_answers الذي تم تقديمه في Discourse PR #39806.

  • المعلمات: يقبل الاستعلام:
    • معلمات :start_date و :end_date بتنسيق YYYY-MM-DD مع قيم افتراضية
    • معرّف فئة اختياري :category_id للفرز حسب فئة محددة
  • التعبير الجدولي المشترك: يستخدم تعبيرًا جدوليًا مشتركًا (CTE) باسم daily_solutions لتنظيم المنطق
  • الروابط (Joins):
    • posts - يضمن أن منشور الحل لا يزال موجودًا ولم يتم حذفه
    • topics - يضمن أن الموضوع موجود، وليس رسالة خاصة، ولم يتم حذفه
    • users - يتحقق من أن ناشر الحل مستخدم صالح
  • الفرز: جملة WHERE:
    • تحدد النطاق التاريخي المحدد
    • تضمن أن المستخدمين نشطين، وغير صامت، وغير معلق
    • تسمح بالفرز الاختياري حسب الفئة
  • التجميع والترتيب: يتم التجميع حسب التاريخ والترتيب تسلسليًا

ستكون مخرجات هذا الاستعلام قائمة بالتواريخ مع العدد المقابل للمنشورات التي تم تحديدها كحلول في كل من تلك التواريخ.

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

اليوم الحلول المقبولة
2023-11-14 16
2023-11-15 5
2023-11-16 10
2023-11-17 4
2023-11-18 2
إعجابَين (2)