Usuários que postaram por domínio de email nos últimos 7 dias

Eu acho que, na verdade, ele fornece números inflados devido às junções de grupo (além disso, todos fazem parte de um grupo automático para seu nível de confiança, então há um pouco de inconsistência aí). Acho que podemos remover isso e talvez adicionar alguns ajustes para focar em tópicos, posts e MPs.

Deixe-me tentar.


Talvez algo como isto:

-- [params]
-- string :interval = 7 days


SELECT
  split_part(ue.email, '@', 2) AS email_domain, -- Extrai a parte do domínio do e-mail
  COUNT(p.id) AS "Total Posts",
  COUNT(p.id) FILTER (WHERE p.post_number = 1 AND t.archetype = 'regular') AS "Tópicos",
  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 "Posts de Mensagem Pessoal"
FROM posts p
  JOIN user_emails ue ON p.user_id = ue.user_id AND ue.primary = TRUE -- Garante que estamos usando o e-mail principal
  JOIN topics t ON t.id = p.topic_id
WHERE p.created_at >= CURRENT_DATE - INTERVAL :interval -- Filtra posts dos últimos x tempo com base no parâmetro
  AND p.user_id > 0 -- Exclui usuários do sistema (sistema e 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 -- Ordena os resultados pela contagem de posts em ordem decrescente
2 curtidas