Gli utenti pubblicano per dominio email negli ultimi 7 giorni

Penso che in realtà fornisca numeri gonfiati a causa delle adesioni ai gruppi (inoltre, tutti fanno parte di un gruppo automatico per il loro livello di fiducia, quindi c’è un po’ di incoerenza lì). Penso che possiamo eliminare quelli e magari aggiungere un paio di modifiche per concentrarci su argomenti, post e PM.

Lasciami provare.


Forse qualcosa del genere:

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


SELECT
  split_part(ue.email, '@', 2) AS email_domain, -- Estrae la parte del dominio dell'email
  COUNT(p.id) AS "Post totali",
  COUNT(p.id) FILTER (WHERE p.post_number = 1 AND t.archetype = 'regular') AS "Argomenti",
  COUNT(p.id) FILTER (WHERE p.post_number > 1 AND t.archetype = 'regular') AS "Post",
  COUNT(p.id) FILTER (WHERE t.archetype = 'private_message') AS "Post messaggi privati"
FROM posts p
  JOIN user_emails ue ON p.user_id = ue.user_id AND ue.primary = TRUE -- Assicura che stiamo usando l'email primaria
  JOIN topics t ON t.id = p.topic_id
WHERE p.created_at >= CURRENT_DATE - INTERVAL :interval -- Filtra i post degli ultimi x tempo in base al parametro
  AND p.user_id > 0 -- Esclude gli utenti di sistema (sistema e bot)
  AND p.deleted_at ISNULL
  AND t.deleted_at ISNULL
  AND p.post_type <> 3
GROUP BY email_domain
ORDER BY "Post totali" DESC -- Ordina i risultati per conteggio dei post in ordine decrescente
2 Mi Piace