مستكشف البيانات - نسبة الأعضاء النشطين شهرياً

مرحبًا بكم جميعًا الذين يلعبون ويستكشفون إضافة مستكشف البيانات!

شكرًا لمساعدتكم في جميع الأسئلة السابقة @michebs. لدي سؤال آخر يتعلق باستعلامات مستكشف البيانات.

هل قام أحدكم بإنشاء استعلام يجلب نسبة المستخدمين النشطين شهريًا؟

النشيطون هم من قاموا بالإعجاب أو الرد على بعض المواضيع في ذلك الشهر، ولا يهم عدد المرات، بل يكفي مرة واحدة على الأقل. تُحسب النسبة المئوية بناءً على عدد جميع أعضاء المجتمع. لذا، لنفترض أن شخصين تفاعلا في شهر ما: أحدهما أعجب بمنشورًا والآخر ردّ على موضوع، إذن العدد هو اثنان، ونقسمه على مجموع جميع الأعضاء في مجتمعنا.

إعجابَين (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
9 إعجابات

نعم، هذا منطقي تمامًا! شكرًا لك!

إعجاب واحد (1)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.