グループを除外する方法は?

こんにちは、皆様。

データエクスプローラータブから「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(整数型)がありますので、これらのユーザーに対して「Employees」がプライマリグループに設定されている場合は、クエリでそれを使用できます。そうでない場合は、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