Número médio de respostas dos membros por tópico (excluindo equipe)

Acho que algo assim lhe daria os números que você procura:

-- [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 "Mês",
    ms.total_topics AS "Todos os Tópicos",
    ms.total_posts AS "Todos os Posts",
    ms.non_staff_posts AS "Posts de não-staff",
    ROUND(ms.non_staff_posts * 100.0 / NULLIF(ms.total_posts, 0),1) || '%' AS "Posts de não-staff (% do total)",
    ms.non_staff_posts / NULLIF(ms.total_topics, 0) AS "Média de posts de não-staff por tópico",
    ms.non_staff_users AS "Usuários de não-staff que postaram",
    ms.staff_posts AS "Posts de staff",
    ROUND(ms.staff_posts * 100.0 / NULLIF(ms.total_posts, 0),1) || '%' AS "Posts de staff (% do total)",
    ms.staff_posts / NULLIF(ms.total_topics, 0) AS "Média de posts de staff por tópico",
    ms.staff_users AS "Usuários de staff que postaram"
FROM month_stats ms
ORDER BY "Mês"

O que lhe daria algo como isto:

E um pouco de texto extra para completar: :slight_smile:

Esta consulta foi projetada para fornecer um resumo estatístico mensal da atividade do fórum, focando especificamente na distinção entre as contribuições de usuários ‘staff’ e ‘não-staff’ dentro de um determinado período. As métricas calculadas incluem o número total de tópicos criados, todos os posts feitos, o número de usuários únicos não-staff que postaram, a contagem e a porcentagem de posts feitos por não-staff, a média de posts de não-staff por tópico, bem como os números correspondentes para membros da staff. A informação destina-se a fornecer insights sobre o engajamento do usuário, a geração de conteúdo e a taxa de participação de membros staff versus não-staff nas discussões do fórum. A consulta garante precisão ao considerar apenas tópicos ‘regulares’ (não-PM) e exclui quaisquer posts ou tópicos excluídos, sussurros/posts pequenos/ações de moderador e posts de usuários do sistema, dentro do intervalo de datas especificado.

Para este, o critério ‘staff’ é que eles estão no grupo automático @staff, que inclui administradores e moderadores - embora isso possa ser ajustado para atingir apenas os administradores, ou até mesmo um grupo personalizado de funcionários que tecnicamente não são ‘staff do site’ como tal. Se você deseja definitivamente excluir moderadores, pode trocar o group_id no início para ‘1’. :+1:

É esse tipo de coisa que você está procurando?