Requête pour créer des groupes basés sur l'activité

Je les ai fusionnés et améliorés (avec mes piètres compétences en SQL), si j’ai besoin de noms d’utilisateur, je télécharge simplement le CSV et je copie/colle la colonne nom d’utilisateur.
J’ai ajouté likes_received_max pour pouvoir diviser les groupes, en excluant le groupe ci-dessus.

Par exemple :
premiers_pas : 5 likes (<30), 500 posts lus, >5 posts l’année dernière,
débutants : 30 likes (<100), 1000 posts lus, >10 posts l’année dernière
padawan : 100 likes, 2000 posts lus, >10 posts l’année dernière
héros : 200 likes, 5000 posts lus, >10 posts l’année dernière

-- [params]
-- int :likes_received
-- int :posts_read
-- int :likes_received_max
-- int :posts_count


WITH user_activity AS (
    SELECT
        p.user_id,
        COUNT(p.id) as posts_count
    FROM posts p
    LEFT JOIN topics t ON t.id = p.topic_id
    WHERE p.created_at::date >= CURRENT_DATE - INTERVAL '1 YEAR'
        AND t.deleted_at IS NULL
        AND p.deleted_at IS NULL
        AND t.archetype = 'regular'
    GROUP BY 1
)

SELECT
    us.user_id,
    u.username,
    us.likes_received,
    us.posts_read_count,
    ua.posts_count,
    u.title
FROM user_stats us
  JOIN user_activity ua ON UA.user_id = us.user_id
  JOIN users u ON u.id = us.user_id
WHERE us.likes_received >= :likes_received
  AND us.posts_read_count >= :posts_read
  AND ua.posts_count >= :posts_count
  AND us.likes_received < :likes_received_max
ORDER BY 2 ASC, 3 ASC, 4 ASC