Réplication de la requête derrière 'sujets sans réponse'

Bonjour !

J’aimerais comprendre quel pourcentage de nouveaux sujets dans une catégorie donnée n’a pas reçu de réponse au cours de la première semaine, et quel pourcentage a été résolu durant cette même semaine. Voici ma requête :

-- [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

Je suis certain qu’il existe des méthodes plus élégantes pour faire cela, mais j’ai vérifié manuellement plusieurs dates et ces chiffres correspondent bien à ce que je constate en examinant les sujets individuellement.

Je suppose que pour n’importe quel jour au cours de la semaine passée, le rapport accessible via /admin/reports/topics_with_no_response devrait afficher le même nombre de sujets sans réponse. Dans la plupart des cas, c’est le cas ; mais dans d’autres, il affiche plus de sujets sans réponse que ceux que ma requête retourne.

Avez-vous une idée de la raison de cette divergence ? Existe-t-il un moyen de consulter la requête qui alimente le rapport « Sujets sans réponse » afin de pouvoir comparer les deux ?

Merci d’avance !

Lorsque j’ai comparé les sujets du rapport sans réponse avec une analyse de la liste des sujets, j’ai noté que le nombre dans le rapport est plus grand, et j’en ai conclu qu’il comptait comme sans réponse les sujets qui n’ont que des réponses de l’auteur du message original.
Je ne peux pas dire avec certitude que c’est la raison de la différence que vous avez remarquée, car je n’ai pas pu vérifier étant donné que votre requête n’apporte pas les chiffres actuels, seulement les chiffres « après 1 semaine ». Et je ne suis pas très bon en SQL.