كيفية تصفية مجموعة؟

مرحبًا بالجميع،

أحاول استبعاد مجموعة أنشأتها باسم “Employees” من تبويب مستكشف البيانات هذا، فما الخطأ الذي أقوم به؟ كيف يمكنني استبعاد المجموعة التي أنشأتها؟:

    SELECT 
    sum(p.score) / count(p) as "average score per post", 
    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 '6 month'
  AND NOT u.admin
  AND NOT u.employees
  AND u.active
GROUP by user_id, u.views
HAVING count(p.id) > 10
ORDER BY sum(p.score) / count(p) DESC
LIMIT 20

يحتوي جدول users على حقل primary_group_id (عدد صحيح)، لذا يمكنك استخدامه في استعلامك إذا كانت مجموعة “الموظفين” محددة كمجموعة أساسية لهؤلاء المستخدمين. وإلا، أعتقد أنك ستضطر إلى إجراء عملية ربط منفصلة مع جدول groups. (ملاحظة — لا أتذكر تفاصيل هيكل الجدول عن ظهر قلب، لكن أداة البحث الصغيرة الموجودة على اليمين عند تحرير استعلام Data Explorer مفيدة جدًا في هذا الشأن!)

للحصول على قائمة بالمستخدمين باستثناء أعضاء مجموعة معينة، يمكنك تجربة شيء من هذا القبيل. هذا سيستثني أعضاء مجموعة ‘employees’. يجب أن يكون من الممكن إعادة صياغة استعلامك لاستخدام هذا.

WITH group_users AS (
SELECT user_id
FROM group_users gu
JOIN groups g
ON g.id = gu.group_id
WHERE g.name = 'employees'
)

SELECT
u.id AS user_id
FROM users u
WHERE u.id NOT IN (SELECT * FROM group_users)
ORDER BY user_id