J’essaie de filtrer un groupe que j’ai créé nommé « Employees » dans cet onglet d’explorateur de données. Qu’est-ce que je fais mal ? Comment exclure un groupe que j’ai créé ? :
SELECT
sum(p.score) / count(p) as "moyenne des scores par publication",
count(p.id) as nombre_de_publications,
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 table users contient primary_group_id (entier), vous pouvez donc l’utiliser dans votre requête si « Employees » est défini comme groupe principal pour ces utilisateurs. Sinon, je pense que vous devrez effectuer une jointure séparée avec la table groups. (Note — Je ne connais pas les détails de la structure de la table par cœur, mais la petite fonction de recherche à droite lors de l’édition d’une requête Data Explorer est très utile pour cela !)
Pour obtenir une liste d’utilisateurs excluant les membres d’un groupe, vous pouvez essayer quelque chose comme ceci. Cela exclura les membres du groupe « employees ». Il devrait être possible de réorganiser votre requête pour utiliser cette méthode.
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