Je pense que cela donne en fait des chiffres gonflés en raison des adhésions aux groupes (de plus, tout le monde fait partie d’un groupe automatique pour son niveau de confiance, il y a donc une légère incohérence). Je pense que nous pouvons supprimer cela et peut-être ajouter quelques ajustements pour cibler les sujets, les publications et les MP.
Laissez-moi essayer.
Peut-être quelque chose comme ceci :
-- [params]
-- string :interval = 7 days
SELECT
split_part(ue.email, '@', 2) AS email_domain, -- Extrait la partie domaine de l'e-mail
COUNT(p.id) AS \"Total Posts\",
COUNT(p.id) FILTER (WHERE p.post_number = 1 AND t.archetype = 'regular') AS \"Topics\",
COUNT(p.id) FILTER (WHERE p.post_number > 1 AND t.archetype = 'regular') AS \"Posts\",
COUNT(p.id) FILTER (WHERE t.archetype = 'private_message') AS \"Personal Message posts\"
FROM posts p
JOIN user_emails ue ON p.user_id = ue.user_id AND ue.primary = TRUE -- Garantit que nous utilisons l'e-mail principal
JOIN topics t ON t.id = p.topic_id
WHERE p.created_at >= CURRENT_DATE - INTERVAL :interval -- Filtre les publications des x derniers temps en fonction du paramètre
AND p.user_id > 0 -- Exclut les utilisateurs système (système et bots)
AND p.deleted_at ISNULL
AND t.deleted_at ISNULL
AND p.post_type <> 3
GROUP BY email_domain
ORDER BY \"Total Posts\" DESC -- Trie les résultats par le nombre de publications dans l'ordre décroissant