Consulta SQL de insignia personalizada basada en cuántos temas resueltos hay en una categoría determinada

Continuando la discusión desde ¿Qué consultas de insignias interesantes se te han ocurrido?:

Estoy tratando de resolver lo siguiente. Quiero que la consulta SQL de abajo funcione para un solo ID de categoría:

SELECT id, user_id, current_timestamp AS granted_at
FROM users
WHERE id IN (
       SELECT p1.user_id
       FROM post_custom_fields pc
       JOIN badge_posts p1 ON p1.id = pc.post_id
       JOIN topics t1 ON p1.topic_id = t1.id
       WHERE p1.user_id <> t1.user_id AND
                    name = 'is_accepted_answer' AND
            p1.user_id IN (
                   SELECT user_id
                   FROM posts
                   WHERE :backfill OR p1.id IN (:post_ids)
            )
        GROUP BY p1.user_id
        HAVING COUNT(*) > 9
)

Ahora verifica el foro global, pero quiero combinarla con una consulta como esta:

SELECT DISTINCT ON (t.user_id) t.user_id, t.created_at AS granted_at
FROM topics t
WHERE t.category_id = 28

¿Alguna sugerencia? Lo siento, hace mucho que no trabajo con SQL.

2 Me gusta