Ciao!
Spero di riuscire a capire quale percentuale dei nuovi argomenti in una determinata categoria non ha ricevuto una risposta nella prima settimana e quale percentuale è stata risolta entro la prima settimana. Ecco la mia query:
-- [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 "Numero di nuovi argomenti",
sum(st.solves)::INT as "# Risolti entro una settimana",
round(sum(st.solves)/count(distinct st.id), 2) as "% Risolti",
(count(distinct st.id) - sum(st.responses))::INT as "Argomenti senza risposta nella prima settimana",
round((count(distinct st.id) - sum(st.responses))/count(distinct st.id), 2) as "% senza risposta nella prima settimana"
from solved_topics as st
group by date
order by date asc
Sono certo che esistano modi più eleganti per farlo, ma ho verificato a campione diverse date e questi numeri sono coerenti con quanto osservo esaminando singoli argomenti.
Dovrei assumere che, per qualsiasi giorno nell’ultima settimana, il report disponibile in /admin/reports/topics_with_no_response mostri lo stesso numero di argomenti senza risposta. Nella maggior parte dei casi è così, ma in altri casi mostra più argomenti senza risposta rispetto a quelli ottenuti con la mia query.
Avete idee sul perché ciò possa accadere? Esiste un modo per visualizzare la query che alimenta il report “Argomenti senza risposta” in modo da poterla confrontare?
Grazie in anticipo!