Ich denke, so etwas würde Ihnen die gewünschten Zahlen liefern:
-- [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 "Monat",
ms.total_topics AS "Alle Themen",
ms.total_posts AS "Alle Beiträge",
ms.non_staff_posts AS "Beiträge von Nicht-Mitarbeitern",
ROUND(ms.non_staff_posts * 100.0 / NULLIF(ms.total_posts, 0),1) || '%' AS "Beiträge von Nicht-Mitarbeitern (% gesamt)",
ms.non_staff_posts / NULLIF(ms.total_topics, 0) AS "Durchschnittliche Beiträge von Nicht-Mitarbeitern pro Thema",
ms.non_staff_users AS "Nicht-Mitarbeiter, die gepostet haben",
ms.staff_posts AS "Beiträge von Mitarbeitern",
ROUND(ms.staff_posts * 100.0 / NULLIF(ms.total_posts, 0),1) || '%' AS "Beiträge von Mitarbeitern (% gesamt)",
ms.staff_posts / NULLIF(ms.total_topics, 0) AS "Durchschnittliche Beiträge von Mitarbeitern pro Thema",
ms.staff_users AS "Mitarbeiter, die gepostet haben"
FROM month_stats ms
ORDER BY "Monat"
Was Ihnen dann so etwas wie das hier liefern würde:
Und ein bisschen Text für den guten Zweck: 
Diese Abfrage soll eine monatliche statistische Zusammenfassung der Forenaktivität liefern, die sich speziell auf die Unterscheidung zwischen Beiträgen von „Mitarbeitern“ und „Nicht-Mitarbeitern“ innerhalb eines bestimmten Zeitrahmens konzentriert. Die berechneten Kennzahlen umfassen die Gesamtzahl der erstellten Themen, alle erstellten Beiträge, die Anzahl der einzelnen Nicht-Mitarbeiter, die gepostet haben, die Anzahl und den Prozentsatz der von Nicht-Mitarbeitern erstellten Beiträge, die durchschnittliche Anzahl von Beiträgen von Nicht-Mitarbeitern pro Thema sowie die entsprechenden Zahlen für Mitarbeiter. Die Informationen sollen Einblicke in das Nutzerengagement, die Inhaltserstellung und die Beteiligungsrate von Mitarbeitern im Vergleich zu Nicht-Mitarbeitern an den Diskussionen im Forum geben. Die Abfrage stellt die Genauigkeit sicher, indem sie nur „reguläre“ (Nicht-PM-)Themen berücksichtigt und gelöschte Beiträge oder Themen, Flüsterbeiträge/kleine Beiträge/Moderatoraktionen sowie Beiträge von Systembenutzern innerhalb des angegebenen Zeitraums ausschließt.
Für diese Abfrage ist das Kriterium „Mitarbeiter“, dass sie zur automatischen Gruppe @staff gehören, zu der sowohl Administratoren als auch Moderatoren gehören – dies kann jedoch angepasst werden, um nur Administratoren oder sogar eine benutzerdefinierte Gruppe von Mitarbeitern anzusprechen, die technisch gesehen nicht „Site-Mitarbeiter“ sind. Wenn Sie Moderatoren definitiv ausschließen möchten, können Sie group_id am Anfang stattdessen auf ‘1’ umstellen. 
Ist das die Art von Sache, nach der Sie suchen?