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

هذا هو إصدار 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(st.created_at) AS solution_date,
    COUNT(*) AS solution_count
  FROM discourse_solved_solved_topics st
  JOIN posts p ON p.id = st.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(st.created_at)
)

SELECT
  solution_date,
  solution_count
FROM daily_solutions
ORDER BY solution_date

شرح استعلام SQL

يستخدم هذا الاستعلام الجدول discourse_solved_solved_topics الذي تم تقديمه في discourse-solved PR #352:

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

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

نتائج مثال

day accepted_solutions
2023-11-14 16
2023-11-15 5
2023-11-16 10
2023-11-17 4
2023-11-18 2
إعجابَين (2)