هذه نسخة 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 |
| … | … |