استعلام لإنشاء بعض المجموعات بناءً على النشاط

في هذه الحالة، أعتقد أن شيئًا كهذا يمكن أن يوفر البحث اليدوي:

-- [params]
-- int :likes_received
-- int :posts_read


WITH user_activity AS (

    SELECT 
        p.user_id, 
        COUNT(p.id) as posts_count
    FROM posts p
    LEFT JOIN topics t ON t.id = p.topic_id
    WHERE p.created_at::date >= CURRENT_DATE - INTERVAL '1 YEAR'
        AND t.deleted_at IS NULL
        AND p.deleted_at IS NULL
        AND t.archetype = 'regular'
    GROUP BY 1
)

SELECT 
    us.user_id,
    us.likes_received,
    us.posts_read_count,
    ua.posts_count
FROM user_stats us
  JOIN user_activity ua ON UA.user_id = us.user_id
WHERE us.likes_received >= :likes_received
  AND us.posts_read_count >= :posts_read
  AND ua.posts_count >= 10
ORDER BY 2 DESC, 3 DESC, 4 DESC

وتعديله/تجريده إلى أسماء مستخدمين فقط سيوفر قائمة يمكنك نسخها ولصقها في مربع “إضافة مستخدمين” في صفحة المجموعة (المجموعات) إذا قمت بتصدير النتائج كملف CSV (وفتحته في شيء مثل المفكرة، على سبيل المثال):

-- [params]
-- int :likes_received
-- int :posts_read


WITH user_activity AS (

    SELECT 
        p.user_id, 
        COUNT(p.id) as posts_count
    FROM posts p
    LEFT JOIN topics t ON t.id = p.topic_id
    WHERE p.created_at::date >= CURRENT_DATE - INTERVAL '1 YEAR'
        AND t.deleted_at IS NULL
        AND p.deleted_at IS NULL
        AND t.archetype = 'regular'
    GROUP BY 1
)

SELECT 
    u.username
FROM user_stats us
  JOIN user_activity ua ON UA.user_id = us.user_id
  JOIN users u ON u.id = us.user_id
WHERE us.likes_received >= :likes_received
  AND us.posts_read_count >= :posts_read
  AND ua.posts_count >= 10
ORDER BY 1

هذا ممكن أيضًا. :partying_face: ستحتاج إلى شارة واحدة (واستعلام شارة) لكل مجموعة، و أتمتة مصاحبة باستخدام البرنامج النصي “عضوية مجموعة المستخدم من خلال الشارة”. يمكنك أيضًا أتمتة الشارات بدلاً من منحها يدويًا عن طريق تمكين الشارات المخصصة التي يتم تشغيلها (Enable Badge SQL و Creating triggered custom badge queries)

هناك الكثير من الأجزاء المتحركة، لذا قد ترغب في إبقائها بسيطة في هذه المرحلة.

إعجابَين (2)