Explorador de Datos - % de miembros activos por mes

¡Hola a todos los que están jugando y explorando el plugin Data Explorer!

Gracias por ayudar con todas las preguntas anteriores, @michebs. Tengo una más sobre las consultas de Data Explorer.

¿Alguien ha creado alguna vez una consulta que obtenga el % de usuarios activos por mes?

Activo significa que dieron ‘me gusta’ o respondieron en algún hilo durante ese mes; no importa cuántas veces, pero debe ser al menos una vez. El % se calcula en base al número total de miembros de la comunidad. Por ejemplo, si dos personas interactuaron en un mes: una dio ‘me gusta’ a una publicación y la otra respondió, entonces son dos, y dividimos ese número por la suma total de miembros que tenemos en nuestra comunidad.

Espero que esto ayude.
Vale la pena mencionar que el número total de usuarios varía con el tiempo, por lo que lo que se considera en la consulta es el número acumulado de usuarios hasta el mes y año en que se realizó la acción.

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í, tiene todo el sentido! ¡Gracias!