مرحبًا بك!
آمل أن أفهم النسبة المئوية للمواضيع الجديدة في فئة معينة التي لم تتلق ردًا خلال الأسبوع الأول، والنسبة المئوية التي تم حلها خلال الأسبوع الأول. إليك استعلامي:
-- [params]
-- string :start_date = 2021-10-06
-- string :end_date = 2021-10-12
WITH solved_topics as
(SELECT
t.created_at::DATE,
t.id,
count(distinct case when u.action_type=15 and u.created_at < (t.created_at + INTERVAL '1 week') and u.target_topic_id=t.id then 1 ELSE NULL END) as solves,
count(distinct case when p.created_at < (t.created_at + INTERVAL '1 week') and p.topic_id=t.id and p.post_number>1 then 1 ELSE NULL END) as responses
from topics t
join user_actions as u
on u.target_topic_id = t.id
join posts as p
on p.topic_id = t.id
where t.created_at BETWEEN :start_date AND :end_date
AND t.user_id > 0
AND p.deleted_at is NULL
AND t.category_id is NOT NULL
group by t.created_at::DATE, t.id)
SELECT
st.created_at as date,
count(distinct st.id) as "Number of New Topics",
sum(st.solves)::INT as "# Solved within a week",
round(sum(st.solves)/count(distinct st.id), 2) as "% Solved",
(count(distinct st.id) - sum(st.responses))::INT as "Topics with No Response in First Week",
round((count(distinct st.id) - sum(st.responses))/count(distinct st.id), 2) as "% with No Response in First Week"
from solved_topics as st
group by date
order by date asc
أنا متأكد من وجود طرق أكثر أناقة للقيام بذلك، لكنني قمت بفحص عدد من التواريخ بشكل عشوائي، وهذه الأرقام تتوافق مع ما أراه عند النظر إلى مواضيع فردية.
أتوقع أنه لأي يوم خلال الأسبوع الماضي، يجب أن يُظهر التقرير الموجود في /admin/reports/topics_with_no_response نفس عدد المواضيع التي لم تتلق ردًا. في معظم الحالات يحدث ذلك؛ لكن في حالات أخرى يُظهر عددًا أكبر من المواضيع التي لم تتلق ردًا مقارنة بما أحصل عليه في استعلامي.
هل لديك أي أفكار حول سبب حدوث ذلك؟ هل توجد طريقة لعرض الاستعلام الذي يُشغّل تقرير “المواضيع التي لم تتلق ردًا” حتى أتمكن من المقارنة والمقارنة العكسية؟
شكرًا مقدّمًا!