'활성’이란 해당 월에 어떤 스레드에서 좋아요를 눌렀거나 답글을 쓴 경우를 의미합니다. 횟수는 상관없지만 최소 1회 이상이어야 합니다. 비율은 커뮤니티 전체 회원 수를 기준으로 계산됩니다. 예를 들어, 한 달 동안 2명이 활동했다고 가정해 보겠습니다. 한 명은 어떤 게시물에 좋아요를 눌렀고, 다른 한 명은 답글을 남겼습니다. 그러면 이 2명을 커뮤니티 전체 회원 수의 합으로 나누는 방식입니다.
도움이 되기를 바랍니다.
전체 사용자 수는 시간에 따라 변하기 때문에, 쿼리에서 고려하는 값은 해당 작업이 수행된 연도와 월까지의 누적 사용자 수입니다.
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