So filterst du eine Gruppe aus?

Hallo zusammen,

ich versuche, eine von mir erstellte Gruppe namens „Employees" in diesem Data-Explorer-Tab auszublenden. Was mache ich falsch? Wie kann ich eine von mir erstellte Gruppe ausschließen?:

    SELECT 
    sum(p.score) / count(p) as "durchschnittliche Punktzahl pro Beitrag", 
    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

Die users-Tabelle enthält die Spalte primary_group_id (Integer), sodass du diese in deiner Abfrage verwenden kannst, wenn „Employees" als Primärgruppe für diese Benutzer festgelegt ist. Andernfalls müsstest du wahrscheinlich einen separaten Join mit der groups-Tabelle durchführen. (Hinweis: Ich kenne die Details der Tabellenstruktur nicht aus dem Kopf, aber die kleine Suchfunktion auf der rechten Seite beim Bearbeiten einer Data Explorer-Abfrage ist dafür super nützlich!)

Um eine Liste von Benutzern zu erhalten, die keine Mitglieder einer bestimmten Gruppe sind, könntest du beispielsweise Folgendes versuchen. Dies schließt die Mitglieder der Gruppe „employees" aus. Es sollte möglich sein, deine Abfrage so anzupassen, dass sie dies verwendet.

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