Badge for posts with Likes from a specific group

Después de un confuso error con algunas “Me gusta” eliminadas que desviaron mis pruebas, creo que esta es una versión revisada de la del OP que cumple tus criterios: :slight_smile:

SELECT p.user_id, MAX(p.created_at) granted_at
FROM badge_posts p
WHERE (SELECT COUNT(*)
        FROM post_actions pa
        WHERE pa.post_id = p.id
         AND post_action_type_id = 2 
         AND deleted_at IS NULL
         AND pa.user_id IN (SELECT gu.user_id FROM group_users gu WHERE gu.group_id = 3)
       ) >= 5
    AND p.user_id >= 0
GROUP BY p.user_id
HAVING COUNT(*) >= 10

Funciona con la vista badge_posts, por lo que solo cuenta las publicaciones de categorías públicas, lo cual puede que quieras tener en cuenta dependiendo de la configuración de tu foro/categoría. Además, usar CURRENT_TIMESTAMP para granted_at es otra opción, pero probablemente sea una cuestión de gustos.