استبعاد المجموعات من استعلام الأعضاء الأعلى جودة

مرحباً،

هل لديك أي نصائح حول كيفية إزالة مجموعات معينة من هذا الاستعلام؟

SELECT 
    sum(p.score) / count(p) as "متوسط النقاط لكل منشور", 
    count(p.id) as post_count, 
    p.user_id
FROM posts p
JOIN users u ON u.id = p.user_id
WHERE p.created_at >= CURRENT_DATE - INTERVAL '3 month'
  AND u.active
GROUP by user_id, u.views
HAVING count(p.id) > 40
ORDER BY sum(p.score) / count(p) DESC
LIMIT 100

شكراً مقدماً!

لم أجرب هذا حقًا.

-- [المعاملات]
-- int_list :exclude_groups = 12, 2, 3

SELECT 
    sum(p.score) / count(p) as "متوسط النقاط لكل منشور", 
    count(p.id) as عدد_المنشورات, 
    p.user_id
FROM posts p
JOIN users u ON u.id = p.user_id
LEFT JOIN group_users gu on u.id = gu.user_id
WHERE p.created_at >= CURRENT_DATE - INTERVAL '3 month'
  AND u.active
  AND (gu.group_id not IN (:exclude_groups))
GROUP by p.user_id, u.views
HAVING count(p.id) > 40
ORDER BY sum(p.score) / count(p) DESC
LIMIT 100

شكرًا لك يا @pfaffman. هذا طيب منك جدًا.

شغّلت السكربت وأرى أعضاء المجموعات المستبعدة يظهرون في النتائج. بالطبع، هم أعضاء في العديد من المجموعات. هل هناك طريقة لكي يستبعد هذا السكربت تمامًا جميع أعضاء جميع المجموعات المدرجة في قائمة :exclude_groups؟

شكرًا لك على اهتمامك.

أوه، صحيح. لم يعمل not in كما توقعت في البداية. إنه لا يفعل شيئًا تقريبًا. أعتقد أن ما يجب فعله هو أولاً استعلام يحصل على المستخدمين غير الموجودين في أي مجموعة، ثم دمج ذلك مع الجزء الآخر من الاستعلام.

آسف.


    -- [المعلمات]
    -- int_list :exclude_groups = 1,2

    SELECT 
        sum(p.score) / count(p) as "متوسط النقاط لكل منشور", 
        count(p.id) as post_count, 
        p.user_id
    FROM posts p
    JOIN users u ON u.id = p.user_id
    WHERE p.created_at >= CURRENT_DATE - INTERVAL '3 month'
      AND u.active
      AND u.id NOT IN(
        SELECT user_id FROM group_users WHERE group_id IN (:exclude_groups)
      )
    GROUP by user_id, u.views
    HAVING count(p.id) > 40
    ORDER BY sum(p.score) / count(p) DESC
    LIMIT 100

@RGJ،

إن مساهماتك في نظام Discourse البيئي ودعمك المذهل لي كعميل تُقدّر حقًا. أنا متحمس جدًا لأنك توفر خدمة استضافة مذهلة!