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é.
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