Data Explorer - % de membres actifs par mois

Salut à tous ceux qui jouent et explorent le plugin Data Explorer !

Merci d’avoir aidé avec toutes les questions précédentes, @michebs. J’en ai une autre concernant les requêtes Data Explorer.

Quelqu’un a-t-il déjà créé une requête qui récupère le pourcentage d’utilisateurs actifs par mois ?

Actif signifie qu’ils ont soit aimé, soit répondu à certains fils de discussion ce mois-là ; peu importe le nombre de fois, mais il faut au moins une action. Le pourcentage est calculé sur la base du nombre total de membres de la communauté. Par exemple, si deux personnes ont interagi dans un mois : l’une a aimé un message et l’autre a répondu, cela fait deux, et on divise cela par la somme de tous les membres de notre communauté.

J’espère que cela vous sera utile.

Il est important de préciser que le nombre total d’utilisateurs varie au fil du temps. Ainsi, ce que prend en compte la requête, c’est le nombre cumulé d’utilisateurs jusqu’au mois et à l’année où l’action a été effectuée.

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

Oui, ça a tout à fait du sens ! Merci !