¡Hola!
Espero entender qué porcentaje de los nuevos temas en una categoría determinada no recibieron respuesta en la primera semana y qué porcentaje se resolvieron en la primera semana. Aquí está mi 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
Estoy seguro de que hay formas más elegantes de hacer esto, pero he verificado manualmente varias fechas y estos números son consistentes con lo que veo al examinar temas individuales.
Supondría que para cualquier día de la última semana, el informe encontrado en /admin/reports/topics_with_no_response debería mostrar el mismo número de temas sin respuesta. En la mayoría de los casos es así; pero en otros casos muestra más temas sin respuesta de los que obtengo en mi consulta.
¿Alguna idea de por qué podría ser esto? ¿Existe una forma de ver la consulta que impulsa el informe “Temas sin respuesta” para poder comparar y contrastar?
¡Gracias de antemano!