Penso che qualcosa del genere ti darebbe i numeri che stai cercando:
-- [params]
-- date :start_date
-- date :end_date
WITH staff_data AS (
SELECT user_id, true as is_staff
FROM group_users
WHERE group_id = 3
),
month_stats AS (
SELECT
date_trunc('month', p.created_at)::date AS month,
COUNT(*) FILTER (WHERE p.post_number = 1) AS total_topics,
COUNT(*) FILTER (WHERE p.post_number <> 1) AS total_posts,
COUNT(DISTINCT p.user_id) FILTER (WHERE p.post_number <> 1 AND is_staff IS NOT TRUE) AS non_staff_users,
COUNT(*) FILTER (WHERE p.post_number <> 1 AND is_staff IS NOT TRUE) AS non_staff_posts,
COUNT(DISTINCT p.user_id) FILTER (WHERE p.post_number <> 1 AND is_staff) AS staff_users,
COUNT(*) FILTER (WHERE p.post_number <> 1 AND is_staff) AS staff_posts
FROM posts p
LEFT JOIN topics t ON t.id = p.topic_id
LEFT JOIN staff_data s ON p.user_id = s.user_id
WHERE p.created_at::date BETWEEN :start_date AND :end_date
AND t.archetype = 'regular'
AND t.deleted_at IS NULL
AND p.deleted_at IS NULL
AND p.post_type = 1
AND p.user_id > 0
GROUP BY month
)
SELECT
ms.month AS "Mese",
ms.total_topics AS "Tutti gli argomenti",
ms.total_posts AS "Tutti i post",
ms.non_staff_posts AS "Post non staff",
ROUND(ms.non_staff_posts * 100.0 / NULLIF(ms.total_posts, 0),1) || '%' AS "Post non staff (% del totale)",
ms.non_staff_posts / NULLIF(ms.total_topics, 0) AS "Post medi non staff per argomento",
ms.non_staff_users AS "Utenti non staff che hanno postato",
ms.staff_posts AS "Post staff",
ROUND(ms.staff_posts * 100.0 / NULLIF(ms.total_posts, 0),1) || '%' AS "Post staff (% del totale)",
ms.staff_posts / NULLIF(ms.total_topics, 0) AS "Post medi staff per argomento",
ms.staff_users AS "Utenti staff che hanno postato"
FROM month_stats ms
ORDER BY "Mese"
Il che ti darebbe qualcosa di simile:
E un po’ di testo aggiuntivo per buona misura: 
Questa query è progettata per fornire un riepilogo statistico mensile dell’attività del forum, concentrandosi specificamente sulla distinzione tra i contributi degli utenti “staff” e “non staff” in un dato periodo di tempo. Le metriche calcolate includono il numero totale di argomenti creati, tutti i post effettuati, il numero di utenti non staff unici che hanno postato, il conteggio e la percentuale di post effettuati da non staff, il numero medio di post non staff per argomento, nonché le cifre corrispondenti per i membri dello staff. Le informazioni sono destinate a fornire approfondimenti sull’engagement degli utenti, sulla generazione di contenuti e sul tasso di partecipazione dei membri staff rispetto ai non staff nelle discussioni del forum. La query garantisce l’accuratezza considerando solo argomenti “regolari” (non PM) ed escludendo post o argomenti cancellati, sussurri/piccoli post/azioni del moderatore e post di utenti di sistema, nell’intervallo di date specificato.
Per questo, il criterio “staff” è che facciano parte del gruppo automatico @staff, che include sia amministratori che moderatori - anche se questo può essere modificato per puntare solo agli amministratori, o anche a un gruppo personalizzato di dipendenti che non sono tecnicamente “staff del sito” in sé. Se vuoi escludere definitivamente i moderatori, puoi sostituire quel group_id all’inizio con ‘1’. 
È questo il tipo di cosa che stai cercando?