Olá!
Estou tentando entender qual a porcentagem de novos tópicos em uma determinada categoria que não receberam resposta na primeira semana e qual a porcentagem que foram resolvidos na primeira semana. Aqui está minha consulta:
-- [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
Tenho certeza de que existem maneiras mais elegantes de fazer isso, mas verifiquei manualmente várias datas e esses números são consistentes com o que vejo ao examinar tópicos individuais.
Eu presumiria que, para qualquer dia na semana passada, o relatório encontrado em /admin/reports/topics_with_no_response deveria mostrar o mesmo número de tópicos sem resposta. Na maioria dos casos, isso acontece; mas em outros casos, ele mostra mais tópicos sem resposta do que os que obtenho na minha consulta.
Alguma ideia do porquê isso possa estar acontecendo? Existe uma maneira de ver a consulta que gera o relatório “Tópicos sem resposta” para que eu possa comparar?
Obrigado desde já!