Data Explorer - % di membri attivi per mese

Ciao a tutti quelli che stanno usando ed esplorando il plugin Data Explorer!

Grazie per aver risposto a tutte le domande precedenti, @michebs. Ne ho un’altra riguardo alle query di Data Explorer.

Qualcuno ha mai creato una query che calcola la percentuale di utenti attivi mese per mese?

Per “attivi” si intende che hanno messo un like o risposto in alcuni thread durante quel mese; non importa quante volte, basta che sia almeno una volta. La percentuale viene calcolata in base al numero totale di membri della community. Quindi, per fare un esempio, se due persone hanno interagito in un mese, una ha messo un like a un post e l’altra ha risposto, allora sono due, e dividiamo questo numero per la somma di tutti i membri della nostra community.

Spero che questo sia utile.
È importante sottolineare che il numero totale di utenti varia nel tempo; pertanto, ciò che viene considerato nella query è il numero cumulativo di utenti fino al mese e all’anno in cui è stata eseguita l’azione.

WITH tt_users_by_month AS (
    SELECT 
        date_part('year', created_at) AS year, 
        date_part('month', created_at) AS month,
        COUNT(*) AS "new_users_month"
    FROM users
    WHERE id > 0
    GROUP BY date_part('year', created_at), date_part('month', created_at)
    ORDER BY date_part('year', created_at) ASC, date_part('month', created_at)
),

total_users AS (
    SELECT
        year, 
        month, 
        SUM(new_users_month) over (ORDER BY year, month rows between unbounded preceding AND current row) AS total
    FROM tt_users_by_month ORDER BY year, month
)

SELECT 
    date_part('year', ua.created_at) AS year, 
    date_part('month', ua.created_at) AS month,
    TRUNC(COUNT(DISTINCT user_id)::decimal/tu.total*100,2) AS "%"
FROM 
    user_actions ua
INNER JOIN total_users tu ON (date_part('year', ua.created_at) = tu.year AND date_part('month', ua.created_at) = tu.month)
WHERE action_type IN (1,5)
	GROUP BY date_part('year', created_at), date_part('month', created_at), total

Sì, ha tutto il senso! Grazie!