Come filtrare un gruppo?

Ciao a tutti,

Sto cercando di escludere un gruppo che ho creato chiamato “Employees” da questa scheda di esplorazione dei dati. Cosa sto sbagliando? Come posso escludere un gruppo che ho creato io?

    SELECT 
    sum(p.score) / count(p) as "punteggio medio per post", 
    count(p.id) as conteggio_post, 
    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

La tabella users contiene il campo primary_group_id (intero), quindi puoi utilizzarlo nella tua query se “Employees” è impostato come gruppo principale per questi utenti. In caso contrario, penso che dovrai eseguire una join separata con la tabella groups. (Nota: non ricordo i dettagli della struttura della tabella a memoria, ma la piccola funzione di ricerca a destra durante la modifica di una query di Data Explorer è estremamente utile per questo!)

Per ottenere un elenco di utenti che esclude i membri di un gruppo, puoi provare qualcosa di simile. Questo esclude i membri del gruppo ‘employees’. Dovrebbe essere possibile rielaborare la tua query per utilizzarla.

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